我有以下(不需要字段中省略)JPA/Hibernate的級聯各種原因導致多餘的左外連接
public class GeneralUser
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String fname;
@OneToMany(mappedBy = "fromGeneralUser", targetEntity = Friendship.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Collection<Friendship> friendships;
}
一個簡單的實體GeneralUser讓我給你的我做的一個很簡單的例子:
GeneralUser user = generalUserService.find(id);
user.setFname("foo")
user = generalUserService.merge(user);
我面臨的問題是,合併用戶執行數據庫選擇之前的hibernate比它應該更復雜。更具體地說,select使用上面定義的「友誼」關係(表格)(關係OneToMany)進行左外連接。
任何提示,以避免這種情況?
如果我改變了:
@OneToMany(mappedBy = "fromGeneralUser", targetEntity = Friendship.class, fetch = FetchType.LAZY, cascade = CascadeType.DELETE)
那麼好的工作,所以它似乎級聯導致冗餘左外連接。
有幫助嗎?
嗨Firo感謝您的即時答覆。 關鍵是我有一個以上的關係,像上面那樣,而hibernate總是按照字母順序使這個外部聯接。爲什麼不包括所有的關係,但只有一個? 我可以禁用外連接,但也保持級聯ALL? – 2012-03-13 16:14:07
也許這一個已經改變了某種原因或不是由於某種原因被延遲加載? – Firo 2012-03-13 17:06:14