2

次のように、Java から DB にオブジェクトを永続化できます。

テーブルパーソン:

varchar name  
varchar groupID  
varchar emailAddress  
key on (name, groupID)

そしてJavaでは

Person foo = new Person("dhackner", "3");  
session.persist(foo);

2 つの引数がキーを構成します。この場合、name と groupID は DB 内の一意のキーであるため、テーブル内の特定の行を明確に識別するのに十分です (複数の "dhackner" エントリ、複数の "group 3" エントリを持つことができますが、"dhackner, group 3" エントリ)。

セットアップが正しいと仮定すると、そのコードは次のようになります。

    name | groupID | emailAddress  
dhackner |       3 |           ""

クエリを記述したり、自動生成された ID を使用したりせずに、その逆を実行できるようにしたいと考えています。

テーブルパーソン:

    name | groupID | emailAddress  
dhackner |       3 |  "something"  
dhackner |       4 |     "foobar"  
   other |       3 |     "barfoo"

Java の場合:

Person foo = new Person("dhackner", "3");  
foo.load(); // something like this
Assert.assertEquals(foo.getEmailAddress(), "something");
4

1 に答える 1

5

はい、これはquery by exampleと呼ばれ、Hibernate では非常に簡単です。

Person foo = new Person("dhackner", "3");
foo = session.createCriteria(Person.class).add(Example.create(foo)).uniqueResult();
Assert.assertEquals(foo.getEmailAddress(), "something");
于 2010-09-02T19:27:06.350 に答える