㈠ hibernate 一對多 查詢怎麼去掉重復數據
加個distinct就可去重了,如下:
select B.A distinct from B where B.name='xx' and B.A.dept='pp'
㈡ Hibernate一對多查詢問題
反正具體我看你這表達意思就是想根據書名獲取到這本書是誰的既然是根據主外鍵那麽就簡單了 hibernate.hbm.xml配置文件裡面找到many to one這個然後加個lazy="false" 這樣你book類裡面不是存的是user類嗎 你頁面獲取的時候 直接${book.User.username}就ok了 不過這樣的缺點就是耗資源
至於你那個異常就是因為默認的lazy=true了 不延遲載入所以查不到 不能初始化代理 session已經關閉了 方法沒問題 如果要這樣lazy=false讓它延遲載入就ok了
樓上的過濾器很好 網上也有資料
㈢ hibernate 一對多 查詢如何去掉重復數據
我建議要用種式要set排序或者增加其條件麻煩並且寫配置文件靈
我項目都兩取數據第取AA做條件取B取少條排序都科
㈣ hibernate一對多查詢的問題
Fetch:
在我們查詢Parent對象的時候,默認只有Parent的內容,並不包含childs的信息,如果在Parent.hbm.xml里設置lazy="false"的話才同時取出關聯的所有childs內容.
問題是我既想要hibernate默認的性能又想要臨時的靈活性該怎麼辦? 這就是fetch的功能。我們可以把fetch與lazy="true"的關系類比為事務當中的編程式事務與聲明式事務,不太准確,但是大概是這個意思。
總值,fetch就是在代碼這一層給你一個主動抓取得機會.
Parent parent = (Parent)hibernateTemplate.execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query q = session.createQuery(
"from Parent as parent "+
" left outer join fetch parent.childs " +
" where parent.id = :id"
);
q.setParameter("id",new Long(15));
return (Parent)q.uniqueResult();
}
});
Assert.assertTrue(parent.getChilds().size() > 0);
你可以在lazy="true"的情況下把fetch去掉,就會報異常. 當然,如果lazy="false"就不需要fetch了
㈤ hibernate中怎麼一對多怎麼使用
我們簡單點說有三列,一個是學生的id,一個是姓名,一個是班級的id
而在資料庫中,你會建一個班級表,
其中有id和班級的名稱,比如計算機三班,二班等等。
班級和學生,班級是一,學生是多。
而在hibernate中,為了簡單起見,一般會在學生類中將班級屬性設置成一個班級類,而在班級類中額外添加一個list或者set。這么做的好處簡單來說,是為了方便。
怎麼方便呢?
這么說吧,比如我們沒這么設置,而是在學生類中只有一個班級的id,那麼你查到一個學生,想看他班級的名稱,是不是還要根據班級的id,去班級表查找對應的名字,這么一來,就會十分麻煩,所以在hibernate中,如果表中有外鍵,那麼一般會將這個外鍵設置成那個表的實體類,這樣一來,我們就不需要多那一步了。
至於你說為什麼將屬性設置到班級的對象,然後保存學生的信息,學生表中就有班級id這個欄位的值了,這個問題,很簡單,因為你不僅把屬性保存到班級對象中了,你肯定還把這個班級對象作為屬性設置給學生了,所以就有了。
換句話說,你等於還是間接的設置了班級id,這個欄位,具體他們的對應關系,自然是在配置文件中顯示的。
㈥ hibernate雙向一對多查詢,從多方查詢,有多個sql
lazy的時候,從一裡面拿details的時候是空。
這個需要在 web.xml 配置
<!-- 解決Hibernate延遲載入問題過濾器,需放在struts2過濾器之前 -->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>excludeSuffixs</param-name>
<param-value>js,css,jpg,gif,png,bmp,jpeg</param-value>
</init-param>
</filter>
<!-- 注意:需放在struts2過濾器filter-mapping之前 -->
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>