1
你知道爲什麼這樣的:預期JPA級聯集內容
class Owner {
@OneToMany(mappedBy = "owner",
cascade = CascadeType.ALL)
public Set<Storage> storages
...
class Storage {
@ManyToOne
public Owner owner
...
不起作用:
Storage s = new Storage("S1")
Owner o = new Owner("O1")
o.storages.add(s)
...
em.persistAndFlush(o)
...
s = Storage.get...
assert(s.owner != null, "Storage does not have an Owner")
o = Order.get...
assert(!o.storages.isEmpty, "Owner does not have any Storage")
測試失敗:
[info] - Storage *** FAILED ***
[info] Storage does not have an Owner
我該如何解決?
它在CascadeType.ALL是:那麼,告訴JPA是所有者和存儲之間是否存在關聯,則必須將存儲的擁有者?因爲現在,我得到「所有者沒有任何存儲」... – Etam 2012-01-10 18:49:55
保持對象圖的連貫性是**你的責任。您必須初始化關聯的兩側。如果你只是設置了自己的一面,這個關聯將會持續下去,但是Hibernate不會爲你初始化另一面。如果您在** new **事務中重新加載對象,則JPA將爲您填充雙方。在當前事務中,它將從緩存中返回對象,就像初始化它們一樣。 – 2012-01-10 19:30:52