我可以将对象从Java持久化到DB中:
表人:
varchar name
varchar groupID
varchar emailAddress
key on (name, groupID)
Run Code Online (Sandbox Code Playgroud)
而在Java中
Person foo = new Person("dhackner", "3");
session.persist(foo);
Run Code Online (Sandbox Code Playgroud)
这两个论点构成了关键.在这种情况下,name和groupID是DB中的唯一键,因此足以清楚地标识表中的任何特定行(可以有多个"dhackner"条目,多个"group 3"条目,但只有一个"dhackner,group" 3"进入).
假设设置正确,该代码将成功生成
name | groupID | emailAddress
dhackner | 3 | ""
Run Code Online (Sandbox Code Playgroud)
我希望能够在不编写查询或使用任何自动生成的ID的情况下执行相反的操作:
表人:
name | groupID | emailAddress
dhackner | 3 | "something"
dhackner | 4 | "foobar"
other | 3 | "barfoo"
Run Code Online (Sandbox Code Playgroud)
在Java中:
Person foo = new Person("dhackner", "3");
foo.load(); // something like this
Assert.assertEquals(foo.getEmailAddress(), "something");
Run Code Online (Sandbox Code Playgroud)