Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按主键休眠查询_Java_Hibernate_Orm - Fatal编程技术网

Java 按主键休眠查询

Java 按主键休眠查询,java,hibernate,orm,Java,Hibernate,Orm,我想通过主键创建查询。 假设我有类主键PersonKey,属性是name和id 我有Person类,属性是PersonKey,address,DOB 现在,我想用主键搜索人 首先,我创建PersonKey的实例,并将名称设置为:joe,id设置为:007 我可以通过ID,通过传递关键变量来获取此人吗 person.findByKey(someKey),但是逻辑不符合标准是的,您可以。假设PersonKey是Serializable,只需将其传递给get方法: PersonKey pk = new

我想通过主键创建查询。 假设我有类主键PersonKey,属性是name和id

我有Person类,属性是PersonKey,address,DOB

现在,我想用主键搜索人

首先,我创建PersonKey的实例,并将名称设置为:joe,id设置为:007

我可以通过ID,通过传递关键变量来获取此人吗


person.findByKey(someKey),但是逻辑不符合标准

是的,您可以。假设
PersonKey
Serializable
,只需将其传递给
get
方法:

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

为什么PersonKey需要序列化?@Reddy是因为Session.get(Class,serializable)的签名。谢谢Pascal,但是为什么hibernate强制序列化?据我所知,hibernate将生成SQL语句,然后仅通过网络发送到数据库,在这种情况下,不需要序列化。。对吗?知道这为什么会给我java.lang.IllegalStateException:在org.hibernate.query.criteria.internal.CriteriaQueryImpl.validate(CriteriaQueryImpl.java:253)中没有指定任何条件查询根吗