1

Hibernate での例のクエリがどのように機能するかを理解しようとしています。

deptId は、部門テーブルの主キーです。

最初にこのコードを試しました:

Dept department = new Dept();
        department.setDeptId(3);
        //department.setDeptName("ABCD");
        Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));

このコードを実行すると、deptId = 3 の行に対して結果がフィルタリングされません。つまり、SQL クエリは、1 = 1 の Dept テーブルからすべてのレコードを選択するのと同じです。

しかし、このコードを考えると:

Dept department = new Dept();
        //department.setDeptId(3);
        department.setDeptName("ABCD");
        Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));

結果は、deptName、つまりABCDでフィルタリングされています

サンプル クエリがこのように動作する理由をお知らせください。

4

1 に答える 1

3

ドキュメントによると、例によるクエリ (QBE) は主キーを無視します。

単純な主キーの場合、 PK の値がわかっている場合は、代わりにload()orを使用できますget()

複合主キーについては、QBE での主キーのサポートが必要であることに同意します。ただし、この要求はまだ解決されていません。

于 2012-06-10T09:12:19.580 に答える