2014-10-31 176 views
0

我有下面这段代码..的Hibernate映射@OneToOne

  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)

+0

这是我第一次看到短暂的关键词,但尽管如此 - 是不是你期望的?瞬态意味着该字段应该没有与数据库的连接。你想解决什么问题? – Deltharis 2014-10-31 12:42:08

回答

0

有没有搞错?

如果某个字段标记为瞬态,则表示它们不是实体持久状态的一部分。

解决方案

变化:

private StaffTbl staffTbl; 
+0

我见过你在春天回答了很多棘手的问题。请在这里回答我的问题http://stackoverflow.com/questions/28577325/how-to-run-2-tasks-separately – 2015-02-18 08:00:56

0

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

如果您打算将staffTbl标记为Hibernate环境中的临时文件,您应该使用@Transient对其进行注释,但是您必须设置其值,因为它不会来自数据库,您可以期待更多空值。