使用hibernate注解,如何标识一个属性非数据库的字段

daichangfu 2012-08-01 09:53:32
使用hibernate注解,如何标识一个属性非数据库的字段。
就是说一个实体类对应了一张表,但是这个实体类中有一个属性不对应表中的字段,这个怎么办???
...全文
8712 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
逆天小北鼻 2012-08-01
  • 打赏
  • 举报
回复
直接写在实体类里面就可以了
tianyc 2012-08-01
  • 打赏
  • 举报
回复
package com.ruanko.model.ad;

import java.io.Serializable;

import sun.nio.cs.HistoricallyNamedCharset;

import com.ruanko.model.BaseObject;


/**
*
* @author tianyucheng
* @hibernate.class
* table="AD_HOME"
*
*/
@SuppressWarnings({ "unchecked", "serial" })
public class AdHome extends BaseObject implements Serializable, Comparable<AdHome> {

/**
* 深色字
*/
public static Long AD_TYPE_DARK = Long.valueOf(2);

/**
* 浅色字
*/
public static Long AD_TYPE_LIGHT = Long.valueOf(1);

/**
* adhomeCacheName(缓存名称)
*/
public static String ADHOME_CACHENAME="AdHome";

/** identifier field */
private Long adId; //广告id

private String adContent; //广告内容

private String adContentEncoded; //广告内容辅助字段

private Long adOrder; //广告序号

private Long adType; //广告字体类型(1浅色 2.深色)



/**
* @hibernate.id generator-class="sequence" type="java.lang.Long" column="ad_id"
* @hibernate.generator-param name="sequence" value="seq_adhome"
*
*/
public Long getAdId() {
return adId;
}

public void setAdId(Long adId) {
this.adId = adId;
}

/**
* @hibernate.property column="ad_content" length="1000" not-null="true"
*
*/
public String getAdContent() {
return adContent;
}

public void setAdContent(String adContent) {
this.adContent = adContent;
}

/**
* @hibernate.property column="ad_order" length="10" not-null="false"
*
*/
public Long getAdOrder() {
return adOrder;
}

public void setAdOrder(Long adOrder) {
this.adOrder = adOrder;
}


/**
* @hibernate.property column="ad_type" length="2" not-null="false"
*
*/
public Long getAdType() {
return adType;
}

public void setAdType(Long adType) {
this.adType = adType;
}



@Override
public boolean equals(Object o) {
// TODO Auto-generated method stub
return false;
}

@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}


}
tianyc 2012-08-01
  • 打赏
  • 举报
回复
package com.ruanko.model.ad;

import java.io.Serializable;

import sun.nio.cs.HistoricallyNamedCharset;

import com.ruanko.model.BaseObject;


/**
*
* @author tianyucheng
* @hibernate.class
* table="AD_HOME"
*
*/
@SuppressWarnings({ "unchecked", "serial" })
public class AdHome extends BaseObject implements Serializable, Comparable<AdHome> {

/**
* 深色字
*/
public static Long AD_TYPE_DARK = Long.valueOf(2);

/**
* 浅色字
*/
public static Long AD_TYPE_LIGHT = Long.valueOf(1);

/**
* adhomeCacheName(缓存名称)
*/
public static String ADHOME_CACHENAME="AdHome";

/** identifier field */
private Long adId; //广告id

private String adContent; //广告内容

private String adContentEncoded; //广告内容辅助字段

private Long adOrder; //广告序号

private Long adType; //广告字体类型(1浅色 2.深色)



/**
* @hibernate.id generator-class="sequence" type="java.lang.Long" column="ad_id"
* @hibernate.generator-param name="sequence" value="seq_adhome"
*
*/
public Long getAdId() {
return adId;
}

public void setAdId(Long adId) {
this.adId = adId;
}

/**
* @hibernate.property column="ad_content" length="1000" not-null="true"
*
*/
public String getAdContent() {
return adContent;
}

public void setAdContent(String adContent) {
this.adContent = adContent;
}

/**
* @hibernate.property column="ad_order" length="10" not-null="false"
*
*/
public Long getAdOrder() {
return adOrder;
}

public void setAdOrder(Long adOrder) {
this.adOrder = adOrder;
}


/**
* @hibernate.property column="ad_type" length="2" not-null="false"
*
*/
public Long getAdType() {
return adType;
}

public void setAdType(Long adType) {
this.adType = adType;
}



@Override
public boolean equals(Object o) {
// TODO Auto-generated method stub
return false;
}

@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}

public int compareTo(AdHome o) {
if(this.getAdOrder() > o.getAdOrder()) {
return 1;
} else if(this.getAdOrder() < o.getAdOrder()) {
return -1;
}
return 0;
}

public String getAdContentEncoded() {
if(adContent != null) {
this.adContentEncoded = this.adContent;
this.adContentEncoded = this.adContentEncoded.replaceAll("'", "\\\\'");
this.adContentEncoded = this.adContentEncoded.replaceAll("\r", "");
this.adContentEncoded = this.adContentEncoded.replaceAll("\n", "");
}
return adContentEncoded;
}

public void setAdContentEncoded(String adContentEncoded) {
this.adContentEncoded = adContentEncoded;
}

}
daichangfu 2012-08-01
  • 打赏
  • 举报
回复
@Transient
可选
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
示例:
//根据birth计算出age属性
@Transient
public int getAge() {
return getYear(new Date()) - getYear(birth);
}
BlueSky66666 2012-08-01
  • 打赏
  • 举报
回复
2楼方法可以解决

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧