1

条件を使用して一意の結果を取得しようとすると、休止状態がテーブルからすべてのコンテンツを返すという、休止状態に関するこの問題があります。

Session session = HibernateUtil.beginTransaction();
Customer c = new Customer();
c.setCustId(custId);
Example ex = Example.create(c);
Criteria criteria = HibernateUtil.getSession().createCriteria(Customer.class);
criteria.add(ex);

Customer customer = (Customer)criteria.uniqueResult();

HibernateUtil.commitTransaction();
HibernateUtil.closeSession();

ただし、次を使用してテーブルをクエリします。

Customer customer = (Customer)session
                    .createSQLQuery("select * from customer_ where custid = :id")
                    .addEntity(Customer.class)
                    .setInteger("id", custId)
                    .uniqueResult();

正しいエントリを返します。 custIdテーブルの主キーです。Customerクラスには 2 つの@OneToManyマッピングが含まれています。

上記の条件の例に何か追加する必要がありますか??

4

1 に答える 1

2

ドキュメントには次のように記載されています。

バージョン プロパティ、識別子、および関連付けは無視されます。

(私のものを強調)

Session.get()識別子を持っている場合は、単純に使用しないのはなぜですか?

于 2012-07-31T13:18:07.840 に答える