做了快两年的EMM,今天zy结束了.
昨天同事遇到了一个问题,搞了一下午,后来我和他们一起研究,搞了好几个小时,最终发现
了原因,在此记录一下。
category 分类表 1 ===>M app_info 表
app_info 中 category_id 是 外键
使用Hibernate3.6.8 注解做的对象关系映射
查询app_info的时候需要将分类关联查出来,于是这样写了语句
String hql = "from AppInfo a join fetch a.category where a.id = 1"
Query query = this.getSession().createQuery();
执行查询后报 categrory_0.category_id 找不到
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CATEGORY_ID", nullable = false,referencedColumnName="ID")
public Category getTbEmmCategory() {
return this.Category;
}
详细的学习了一下joincolumn的属性
JoinColumn
如果在entity class的field上定义了关系(one2one或one2many等),我们通过JoinColumn来定义关系
的属性。JoinColumn的大部分属性和Column类似。
元数据属性说明:
name:当前表的列名称
referencedColumnName:该列指向列的列名(建表时该列作为外键列指向关系另一端的指定列)
unique: 是否唯一
nullable: 是否允许为空
insertable: 是否允许插入
updatable: 是否允许更新
columnDefinition: 定义建表时创建此列的DDL
secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字
最后发现category 实体类中定义了一个属性category_id,删掉后就OK了
Hibernate 一对多关系设置
猜你喜欢
转载自taoshi.iteye.com/blog/2164941
今日推荐
周排行