Hibernate 一对多关系设置

做了快两年的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)