2010-06-12 66 views
2

我使用NetBeans 6.8构建Spring MVC应用程序。NetBeans生成JpaController出错

技术:

  • Spring MVC的2.5
  • 德比DB
  • Hibernate作为ORM
  • 的GlassFish v3的服务器

我用新JPA控制器类通过实体类为添加ORM文件。它应该生成用于管理POJO文件查询的类。

问题是,产生的NetBeans下面的代码,并且将不编译:

public int getBrandCount() { 
     EntityManager em = getEntityManager(); 
     try { 
      CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); 
      Root<Brand> rt = cq.from(Brand.class); 
      cq.select(em.getCriteriaBuilder().count(rt)); 
      Query q = em.createQuery(cq); 
      return ((Long) q.getSingleResult()).intValue(); 
     } finally { 
      em.close(); 
     } 
    } 

在图像,存在的NetBeans错误: alt text http://i46.tinypic.com/dy0t1d.jpg

它看起来像方法的Entity Manager InterfacegetCriteriaBuilder是未实现。或者为什么我不能在代码中使用它的其他原因。

我不知道我应该提供哪些其他信息,因此请询问是否有任何问题出现在您的脑海中。

感谢

回答

1

NetBeans的,所以你需要你的类路径上的JPA 2.0 API来编译你的代码(和JPA 2.0提供商来运行它)是生成JPA 2.0代码。既然你在使用Hibernate,这里有需要的库使用Hibernate实体管理器3.5.1决赛:

 
org.hibernate:hibernate-entitymanager:jar:3.5.1-Final:compile 
+- org.hibernate:hibernate-core:jar:3.5.1-Final:compile 
| +- antlr:antlr:jar:2.7.6:compile 
| +- commons-collections:commons-collections:jar:3.2:compile 
| +- dom4j:dom4j:jar:1.6.1:compile 
| | \- xml-apis:xml-apis:jar:1.0.b2:compile 
| \- javax.transaction:jta:jar:1.1:compile 
+- org.hibernate:hibernate-annotations:jar:3.5.1-Final:compile 
| \- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile 
+- cglib:cglib:jar:2.2:compile 
| \- asm:asm:jar:3.1:compile 
+- javassist:javassist:jar:3.9.0.GA:compile 
\- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.0.Final:compile 
+0

看来JPA 2.0 + Derby DB不是很好的朋友。它实际上更适合于MySQL: - | – Xorty 2010-06-13 10:59:39

+0

这与国际海事组织没有任何关系与MySQL或德比(这与JPA 2.0正常工作)。 – 2010-06-13 12:29:47

+0

你是对的,libs问题。谢谢 – Xorty 2010-06-13 15:43:08

0

  • Netbeans的7.0.1
  • 部署项目时有类似的问题
  • 的Apache Tomcat 7
  • 休眠3

当从映射数据库中的类的实体,我混合它的无线因此控制器可以由Java持久性控制器轻松生成。问题是一样的。 getCriteriaBuilder是个问题,因为它不被JPA 1.0支持。我已经在项目类路径中检查了它,并且发现由于项目导入了来自ejb3和EclipseLink(JPA2.0)的持久性库两个持久性库,所以未使用持久性库。

当我删除ejb持久性库时,getCriteriaBuilder对我来说工作正常。

1

我遇到了这个问题,发现我在项目库管理器列表中的Persistence(JPA 2.0)库上面有Hibernate JPA库(包含在Netbeans中)。我将Hibernate的持久性移到了Hibernate上,并清除了编译问题。