我有以下代码..
工作正常(staffTbl
没有得到懒惰的提取)
@OneToOne(fetch=FetchType.LAZY)
@JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)})
private StaffTbl staffTbl;
但是当我做这个瞬态时它始终取出null:
@OneToOne(fetch=FetchType.LAZY)
@JoinColumns({@javax.persistence.JoinColumn(name="inst_id", referencedColumnName="inst_id", insertable=false, updatable=false), @javax.persistence.JoinColumn(name="staff_id", referencedColumnName="staff_id", insertable=false, updatable=false)})
private transient StaffTbl staffTbl;
有什么错吗?
(我使用Hibernate 3,使用JBoss 6.1)
答案 0 :(得分:1)
有任何错误吗?
如果某个字段标记为瞬态,则表示它们不属于该实体的持久状态。
<强>解决方案强>:
更改为:
private StaffTbl staffTbl;
答案 1 :(得分:0)
transient
作为java关键字意味着在对象序列化时应忽略此字段,因此您可能会看到此效果。问题是你想要实现什么目标?
如果你打算在Hibernate的上下文中将staffTbl
标记为瞬态,你应该用@Transient
注释它,但是你必须设置它的值,因为它赢了来自数据库,您可以期待更多的空值。