正如在主题上所述,我的问题是EntityManagerFactory
无法构建。我用的是Maven + Hibernate。我正在连接到MySQL DB(<jdbc://mysql://localhost:3306/<dbname>
)。
奇怪的是,在Eclipse中调试时,它工作得很好。但是当我使用Maven build构建它时,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.xml:
<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>
===========================================================================
我做错了什么?或者我缺少什么?
如前所述,它正在调试。但是当我将它打包到JAR中时(所有必要的JAR都在libs文件夹中),它就不是了。
5条答案
按热度按时间lmvvr0a81#
在你的xml文件中添加这个
d5vmydt92#
<class>classname</class>
我怀疑您的实体没有命名为classname,所以请尝试指定完整的classspath-name(例如foo.bar.realclassname,其中realclassname是您的实体类的名称)。
x4shl7ld3#
persistence.xml
文件应该放在jar根目录的META-INF
文件夹中。看看它是否在那里。我猜这纯粹是一个与类路径相关的问题。jc3wubiy4#
尝试重命名持久性单元。这一点很重要,因为名称用于标识与每个EntityManager相关的持久性单元。
所以:
应改为(例如):
nue99wik5#
检查hibernate版本是否支持方言,特别是如果您使用oracle驱动程序。