0

我有以下代码..

  1. 工作正常(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;

  2. 但是当我使这个瞬态它总是获取空值时: @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)

4

2 回答 2

1

有什么错误吗?

如果一个字段被标记为瞬态,这意味着它们不是实体持久状态的一部分。

解决方案

改成:

private StaffTbl staffTbl;
于 2014-10-31T12:54:33.307 回答
0

transient作为 java 关键字意味着当对象被序列化时应该忽略这个字段,所以你可能会看到这个的效果。问题是你想达到什么目标?

如果您打算staffTbl在 Hibernate 的上下文中将其标记为瞬态,您应该使用 注释它@Transient,但您必须设置它的值,因为它不会来自数据库并且您可以期待更多的空值。

于 2014-10-31T12:55:53.770 回答