Java 休眠选择大于的最低值
我试图让hibernate返回一个ID值最小且大于某个值的对象 我的代码返回的是一个整数,而不是对象Java 休眠选择大于的最低值,java,hibernate,Java,Hibernate,我试图让hibernate返回一个ID值最小且大于某个值的对象 我的代码返回的是一个整数,而不是对象 Criteria idQuery = session.createCriteria(Story.class); idQuery.add(Restrictions.ge("id", 2)); idQuery.setProjection(Projections.min("id")); int returnedId = criteria.uniqueResult(); Criteria storyQ
Criteria idQuery = session.createCriteria(Story.class);
idQuery.add(Restrictions.ge("id", 2));
idQuery.setProjection(Projections.min("id"));
int returnedId = criteria.uniqueResult();
Criteria storyQuery = session.createCriteria(Story.class);
storyQuery.add(Restrictions.idEq(returnedId);
Story story = (Story) storyQuery.uniqueResult();
return story;
代码
现在返回3作为一个整数。3是下一个可用的ID,但为什么hibernate会返回一个整数而不是对象
通过添加投影,您实际上是在要求Hibernate将查询从SELECT*from TABLE更改为SELECT MINID from TABLE查询。这是投影的特征之一 要实现实际想要实现的目标,需要使用投影来获取ID,然后使用另一个查询来检索对象
Criteria idQuery = session.createCriteria(Story.class);
idQuery.add(Restrictions.ge("id", 2));
idQuery.setProjection(Projections.min("id"));
int returnedId = criteria.uniqueResult();
Criteria storyQuery = session.createCriteria(Story.class);
storyQuery.add(Restrictions.idEq(returnedId);
Story story = (Story) storyQuery.uniqueResult();
return story;
因为你是在告诉它这么做。顺便说一句,整数是一个对象。谢谢Orid。我已经获取了返回的整数,并使用它从数据库中提取正确的故事对象。但似乎效率很低。