2012-05-13 10 views
0

要するに、ユーザーには多くの「クライアントではない」(これはユーザーが提供できないクライアントです)です。ユーザーは、結合テーブルを介して複数のクライアントに関連付けられます。JoinTableとOneToManyの関連付けがNULLを返す

Userクラス:https://gist.github.com/dd99690fcaaba2c834d6

Clientクラス:https://gist.github.com/10de71bcd1914ded5fb9

DAO:https://gist.github.com/dd4a369d60a05460d0c0

ユーザーの "notClients" 属性は、誰も私が理由を理解することができ、常にnullですか?

答えて

1

要するに、選択したクエリには含まれていないからです。なぜあなたはSQLクエリを書いているのか、そしてbeanトランスフォーマーを使っているのか分かりませんか?これは、休止状態を使用する非常に奇妙な方法です。結局のところ、あなたが戻ってきたのは、休止状態の管理されたエンティティではないということです。それは、選択した特定のものがマップされているオブジェクトです。休止状態を使用する

「ノーマル」/「正しい」方法は、このようなものになるだろう:

private User getUser(int id, String userType) 
{ 
    User result; 

    session = HibernateUtil.getWilsonsSessionFactory().getCurrentSession(); 
    session.beginTransaction(); 

    Query query = session.createQuery("select u from User u 
             where u.id = :id and u.role = :role"); 
    query.setParameter("id", id); 
    query.setParameter("role", userType); 

    result = (User)query.uniqueResult(); 

    session.getTransaction().commit(); 

    return result; 
} 

次に何を取り戻すことは、すべてのマップされたプロパティが読み込まなければなりませんHibernateのエンティティです。

は(個人的にはどちらか、そのようにuniqueResultを使用しますが、私はそれが大きく、スタイルの好みで認めることを喜んでいないでしょう。)

+0

HQLに切り替える魅力のように働きました!どうもありがとうございました!!! – AnarchoTroll