如上所述,我的问题是无法构建EntityManagerFactory
。我正在使用Maven + Hibernate。我正在连接MySQL DB(<jdbc://mysql://localhost:3306/<dbname>
)。
这里奇怪的是在Eclipse中调试期间,它工作正常。但是当我使用Maven构建它时,JAR文件会抛出这样的错误。我已经检查了Manifest文件,并且所有必需的JAR都包含在Class-Path中。以下是控制台中显示的JAR错误:
=============================================== ============================
Feb 3, 2012 5:01:16 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
Feb 3, 2012 5:01:16 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.0.1.Final}
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Feb 3, 2012 5:01:16 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Feb 3, 2012 5:01:16 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Feb 3, 2012 5:01:16 PM class <name>.<name>.<name> <name>
SEVERE: [ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory
[ERROR]: [PersistenceUnit: <name>] Unable to build EntityManagerFactory
=============================================== ============================
下面的<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_1_0.xsd"
version="1.0">
<persistence-unit name="<name>">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>classname</class>
<properties>
<!-- <property name="hibernate.ejb.cfgfile" value="/classifyPE.cfg.xml"/> -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.password" value="<value>" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/<name>" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
</persistence>
=============================================== ============================
我在这里做错了什么?或者我缺少什么? 如上所述,它正在使用Debug。但是当我将它打包到JAR中时(在libs文件夹中存在所有必需的JAR),它不是。
答案 0 :(得分:4)
在xml文件中添加
<property name="javax.persistence.validation.mode">none</property>
答案 1 :(得分:2)
<class>classname</class>
我怀疑你的实体没有命名为classname,所以请尝试指定完整的classpath-name(例如foo.bar.realclassname,其中realclassname是你的实体类的名称)。
答案 2 :(得分:0)
persistence.xml
文件应该放在jar根目录的META-INF
文件夹中。检查它是否存在。我猜这纯粹是与类路径相关的问题。
答案 3 :(得分:0)
尝试重命名持久性单元。这很重要,因为该名称用于标识与每个EntityManager相关的持久性单元。
所以:
<persistence-unit name="<name>">
应替换为(例如):
<persistence-unit name="myUnit">