我決定今天嘗試一下Hibernate,雖然安裝起來可能更容易,但看起來很有希望。Hibernate Bean驗證在類路徑中不可用
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: manager1] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
(...)
Caused by: org.hibernate.HibernateException: Bean Validation not available in the class path but required in javax.persistence.validation.mode
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyHibernateListeners(BeanValidationIntegrator.java:281)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:134)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:303)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 5 more
Peristence.xml:
<?xml version='1.0' encoding='utf-8' ?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>net.zomis.hibernate.Game</class>
<class>net.zomis.hibernate.TestFields</class>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<validation-mode>CALLBACK</validation-mode>
<properties>
<property name="javax.persistence.validation.mode" value="NONE" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="validate"/>
</properties>
</persistence-unit>
</persistence>
的(據我可以告訴)的相關部分具有針對第一萬左右配置錯誤我現在仍堅持這一發現一個解決方案之後的hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
(...)
<property name="hbm2ddl.auto" >validate</property>
<mapping class="net.zomis.hibernate.Game" />
<mapping class="net.zomis.hibernate.TestFields" />
</session-factory>
</hibernate-configuration>
我曾嘗試加入this到構建路徑沒有任何改變。我搜索了Bean Validation not available in the class path but required in javax.persistence.validation.mode
,也只是Bean Validation not available in the class path
。我找到了源代碼,但這並沒有多大幫助。
我也嘗試從xml配置文件中刪除屬性,沒有任何運氣。
我不要使用Maven。我只是簡單地使用Eclipse,並直接從Eclipse構建並運行項目。
顯而易見的問題是:我該如何解決這個問題?我在構建路徑上需要額外的jar嗎? (在那種情況下哪一個?)以及:爲什麼需要?我可以改變一些東西,以便它不再需要嗎?
除非您使用JEE6,否則驗證API jar不應該被使用,因爲它是捆綁的。 – 2013-02-09 21:12:29
最後,問題解決了。 (驚訝我找不到以前的問題)我也發現我也需要這個:http://mvnrepository.com/artifact/org.hibernate/hibernate-validator下一個項目將學習Maven我想:) ...然後終於明白git:P(儘管我之前使用過git) – 2013-02-09 21:19:12
Maven在處理這些依賴性問題方面確實幫助你很多。大多數框架(spring/hibernate/....)都使用它,所以你立即獲得了好處。 – ddewaele 2013-02-09 21:26:03