java 【坚持单位:]< name>:无法生成EntityManagerFactory

laik7k3q  于 2023-06-20  发布在  Java
关注(0)|答案(5)|浏览(89)

正如在主题上所述,我的问题是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文件夹中),它就不是了。

lmvvr0a8

lmvvr0a81#

在你的xml文件中添加这个

<property name="javax.persistence.validation.mode">none</property>
d5vmydt9

d5vmydt92#

<class>classname</class>
我怀疑您的实体没有命名为classname,所以请尝试指定完整的classspath-name(例如foo.bar.realclassname,其中realclassname是您的实体类的名称)。

x4shl7ld

x4shl7ld3#

persistence.xml文件应该放在jar根目录的META-INF文件夹中。看看它是否在那里。我猜这纯粹是一个与类路径相关的问题。

jc3wubiy

jc3wubiy4#

尝试重命名持久性单元。这一点很重要,因为名称用于标识与每个EntityManager相关的持久性单元。
所以:

<persistence-unit name="<name>">

应改为(例如):

<persistence-unit name="myUnit">
nue99wik

nue99wik5#

检查hibernate版本是否支持方言,特别是如果您使用oracle驱动程序。

相关问题