是否可以将CriteriaQuery与JPA 1.0一起使用。我猜JPA 2.0不适用于Java Se(版本 - Java(TM)SE运行时环境(版本1.6.0_16-b01))。我与使用联系在一起,
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Test> cq = cb.createQuery(Test.class);
Root<Test> test= cq.from(Test.class);
...
但是在javax.persistence中找不到CriteriaBuilder的定义。*; (尝试导入javax.persistence.criteria.CriteriaBuilder;以及)
如果不可能,我有什么最好的选择。我在后端使用hibernate,但仍然有非专有的方法来做到这一点?如果不是在休眠怎么办?
感谢。
答案 0 :(得分:6)
是否可以将CriteriaQuery与JPA 1.0一起使用。
不,JPA 1.0没有指定Criteria API,Criteria API是JPA 2.0新功能的一部分。
我猜JPA 2.0不适用于Java SE
JPA 1.0和JPA 2.0都不是Java SE(捆绑)的一部分。但是,您可以在Java SE中使用JPA(1.0或2.0)。
(...)但是在javax.persistence中找不到CriteriaBuilder的定义。*
如上所述,这不是JPA 1.0 API的一部分,如果您没有使用JPA 2.0实现,则无法找到它。
如果不可能,我有什么最好的选择。我在后端使用hibernate,但仍然有非专有的方法来做到这一点?如果不是怎么做hibernate?
您的唯一选择是使用Hibernate的专有 API Criteria Queries。您需要访问Session
才能执行此操作:
org.hibernate.Session session = (Session) em.getDelegate();
Criteria crit = session.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
答案 1 :(得分:0)
JPA2当然可用于Java SE,但默认情况下不附带JDK。
由于JPA1规范没有在EntityManager上指定类似getCriteriaBuilder()
方法的内容,因此如果不升级到JPA2,则不太可能轻松使用它们。
Hibernate 3.5+的hibernate-entitymanager.jar
文件为Hibernate实现了JPA2 api,并允许您在Java SE中使用新的JPA功能。
有关详细信息,我建议Hibernate Core和Hibernate Entity Manager的参考文档,特别是后者中有关在Java SE中获取EntityManager的部分。