0

つまり、ユーザーには多くの「クライアントではない」ものがあります (これらは、ユーザーがサービスを提供できないクライアントです)。ユーザーは、結合テーブルを介して複数のクライアントに関連付けられています。

ユーザークラス: https://gist.github.com/dd99690fcaaba2c834d6

クライアントクラス: https://gist.github.com/10de71bcd1914ded5fb9

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

User の「notClients」属性は常に null ですが、その理由を理解できる人はいますか?

4

1 に答える 1

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 をそのように使用することはありませんが、それが主にスタイルの好みであることは認めます。)

于 2012-05-13T22:33:16.893 に答える