使用主键进行Hibernate查询

4

我想通过主键创建查询。

假设我有一个名为PersonKey的类作为主键,其属性是名称和ID。

我有一个名为Person的类,其属性是PersonKey、地址和出生日期。

现在,我想通过主键搜索人员。

首先,我创建了PersonKey的实例,并将名称设置为joe,ID设置为007。

我可以通过传递关键变量来按ID获取人员吗?

person.findByKey(someKey);,但该逻辑不符合条件。

1个回答

5

是的,你可以这样做。假设PersonKey是可序列化的,只需将其传递给get方法:

PersonKey pk = new PersonKey(007l, "joe");
Person person = (Person) session.get(Person.class, pk);

为什么PersonKey需要可序列化? - Reddy
@Reddy 因为 Session.get(Class, Serializable) 的方法签名。 - Pascal Thivent
谢谢Pascal,但为什么hibernate强制序列化? 根据我的理解,Hibernate将生成SQL语句,然后仅将其发送到数据库,因此在这种情况下序列化是不必要的..对吧? - Reddy
你有什么想法为什么会出现java.lang.IllegalStateException: No criteria query roots were specified的错误? 在org.hibernate.query.criteria.internal.CriteriaQueryImpl.validate(CriteriaQueryImpl.java:253)处进行了验证。 - Alex R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接