客戶,關係,狀態
裏面我Client
實體,我有
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "relationId")
private Relation relationId;
和
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "statusId")
private Status statusId;
關係和狀態實體只有getter/setter,沒有關係。
在這裏,我保存/更新我的客戶,以及與此我想保存/創建這個關係以及
Session session = sessionFactory.openSession();
try
{
Transaction tr = session.beginTransaction();
updatedClient = (Client) session.get(Client.class, id);
updatedClient.setClientPostCode(client.getClientPostCode());
updatedClient.setRelationId(client.getRelationId());
session.saveOrUpdate(client.getRelationId());
session.update(updatedClient);
tr.commit();
}
有這段代碼也不例外,Client
保存成功,成功創建Relation
但創建的relationID
未分配給客戶表中的relationID
列。
其與該代碼創建的關係具有relationID
(PrimaryKey的:3) 但在Client
的relationId
柱,被保存的值始終爲0
這實際上應該在這種情況下3
。
任何想法我做錯了什麼?
是不是有可能在 這一行之後得到relationId
?
session.saveOrUpdate(client.getRelationId());
所以,我可以得到relationId
而不去DB和簡單地保存在標識我Client
表?
session.save(client.getRelationId()); \t \t \t session.flush();在這裏嘗試,但沒有運氣! – junaidp
'commit'刷新會話並結束工作單元,如果flushmode未設置爲手動[FlushMode](http://docs.jboss.org/hibernate/orm/4.1/javadocs/org/hibernate/FlushMode。 html) – Peter
是的,即使提交後,我沒有得到任何表生成的Id,因爲我在調試 – junaidp