2010-06-12 52 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上,並清除了編譯問題。