日期:2014-05-17  浏览次数:20709 次

hibernate 一对一单向注解 主表主键关联从表的非主键
请教大神们,小弟感激不尽
现在有两张表userinfo 和 userinfodetail
userinfo有一个字段id自增长,userinfo有一个id自增长和userinfoid两个字段
现在让userinfo的主键id关联userinfodetail的userinfoid

userinfo实体类注解
@OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="id",referencedColumnName="userinfoid",unique=true,nullable=false)
public Userinfodetail getUserInfoDetail() 
hibernate打印出on userinfo.id=userinfodetail_.id 
也就是说referencedColumnName不起作用
当name写上一个不存在的值时,比如name="aaa"
hibernate会打印出on userinfo.aaa=userinfodetail_.userinfoid 
此时referencedColumnName起了作用,好纠结,我们公司大牛都没什么办法

------解决方案--------------------
你这是一个多对一的关系, 检查下映射文件
------解决方案--------------------
一般hiberbate注解是外键关联主键,所以建议你在userinfdetail写上关联信息,如果想要主表关联从表,建议再在主表加上一个字段来关联从表的主键就可以了
------解决方案--------------------
之前遇到过,这个应该是hibernate没实现好,本来按照JPA的@JoinColumn的API说明referencedColumnName不写默认为主键写了就应该去映射里面的字段,可hibernate在OneToOne的单向关联下就死活不认.这种情况楼主如果一定要让他起作用了别用OneToOne用ManyToOne,这个就能让referencedColumnName起作用