Re: [問題] hibernate的問題...
※ 引述《TonyQ (沉默是金)》之銘言:
: 再做一個關係有點複雜的join ,
: 雖然說hibernate本質不是很適合 , 不過總是想挑戰一下 .
: 這篇文章我實在是猶豫了一下要發在db還是這裡 ,
: 不過想想還是這裡比較適合 =.=a
: 前情題要如下 這是join的關係 .
: Word -> Cate
: ↑
: UserWord
: ↓
: User
: 目標是從UserWord 找出特定user所擁有的 Cate .
: (都有在hbm設定join關係 , 先假設對應的成員變數都是類別開頭小寫,
: 以及table名跟類別名一樣.)
: 我想查詢某特定使用者 (ex sid=1) 所發表文章的所有Cate.
: 這樣下是撈的到的
: return session.createQuery("select uw.word.cate from UserWord
: uw where ui.user.sid=:usersid ").setParameter("usersid", userSid);
: 不過我最近在練習 Criteria用法 , 所以我試著換種寫法寫 ,
: return session.createCriteria(UserWord.class).add(
: Restrictions.eq("user.sid", userSid)).setProjection(
: Projections.projectionList().add(
: Property.forName("word.cate")
: )
: );
: 這樣會出現 word.cate 找不到的訊息...orz
: org.hibernate.QueryException: could not resolve property: word.cate
: 雖然說hql是有解決 ,不過還是想知道問題點在哪 ,
: 不曉得有沒有前輩知道我誤用的差異點在哪@@
: 文件下午翻了好幾次也沒注意到有寫到這麼複雜的狀況@@
: http://www.hibernate.org/hib_docs/reference/en/html/querycriteria.html
: 有人知道的話請讓我知道問題差在哪 困惑中...@@
做 join 的時候要留意是 ~to-one 還是 ~to-many
~to-one 可以像你那樣寫 entity1.property2.property3
那麼 hibernate 會自動幫你做 inner join
但如果某 property 是 ~to-many 的話就要 explicitly 寫
left/right/inner join.
比如
select cate from user
inner join user.words words
inner join words.cate cate
where user.id=?
大概這樣吧?
alien
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.218.220.118
推
08/10 12:30, , 1F
08/10 12:30, 1F
→
08/10 12:59, , 2F
08/10 12:59, 2F
→
08/10 13:01, , 3F
08/10 13:01, 3F
推
08/10 13:26, , 4F
08/10 13:26, 4F
→
08/10 20:15, , 5F
08/10 20:15, 5F
→
08/10 20:17, , 6F
08/10 20:17, 6F
推
08/10 21:21, , 7F
08/10 21:21, 7F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):