解決hibernate left join fetch 出錯的問題

解決hibernate left  join fetch 出錯的問題

今天寫一個hql,其中用到了 left join fetch ,最後報錯: 

 
//錯誤的寫法:
String hql = "select count(ar) from Article ar left join fetch ar.channel ch where ch.id=?"; 

query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=c,role=null,tableName=Student,tableAlias=studentlig1_,origin=classentity classentitylo0_,colums={classentitylo0_.entry_id ,className=com.common.Manger}}]...
查了下資料,發現是我在實體Article中使用了@ManytoOne(fetch=FetchType.EAGER)緣由,在實體中註解指定了fetch後,在hql中就不能再寫fetch了,把fetch去掉,直接能夠成 String hql = "select count(ar) from Article ar left join  ar.channel ch where ch.id=?" 就能夠了。

在Article實體中的配置Channle
@ManyToOne(cascade=CascadeType.REFRESH,fetch=FetchType.EAGER,optional=true)
@JoinColumn(name="cid",nullable=true)
public Channel getChannel() {
return channel;
}
正確的寫法 : 
String hql = "select count(ar) from Article ar left join  ar.channel ch where ch.id=?"
相關文章
相關標籤/搜索