2012-02-03 21 views
6

Như đã nêu trên đối tượng, vấn đề của tôi là EntityManagerFactory không thể được xây dựng. Tôi đang sử dụng Maven + Hibernate. Tôi đang kết nối với một DB MySQL (<jdbc://mysql://localhost:3306/<dbname>).[PersistenceUnit: <name>]: không thể xây dựng EntityManagerFactory

Điều kỳ lạ ở đây là trong khi gỡ lỗi trong Eclipse, nó hoạt động tốt. Nhưng khi tôi xây dựng nó bằng cách sử dụng xây dựng Maven, tệp JAR đang ném lỗi như vậy. Tôi đã kiểm tra tệp kê khai đã có và tất cả các JAR cần thiết được bao gồm trong Class-Path. Dưới đây là lỗi của JAR được hiển thị trong bảng điều khiển:

================================== =========================================

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 

== ================================================== =======================

dưới đây là persistence.xml tôi:

<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> 

========= ================================================== ================

Tôi đang làm gì sai ở đây? Hay tôi đang thiếu gì?
Như đã đề cập, nó hoạt động trên Debug. Nhưng khi tôi gói nó vào JAR, (với tất cả các JAR cần thiết có trong thư mục libs), nó không phải.

+1

Tôi đoán có nhiều hơn thế trong giao diện điều khiển phải của bạn? Có lẽ một dấu vết ngăn xếp chi tiết? – tartak

+1

Phải có nhiều nhật ký bên dưới sự thực thi nhất định, vui lòng đăng chúng –

Trả lời

0

Tệp persistence.xml được cho là nằm trong thư mục META-INF ở gốc của bình. Kiểm tra xem nó có ở đó hay không. Tôi đoán rằng đây hoàn toàn là một vấn đề liên quan đến classpath.

+0

Có thư đã nằm trong thư mục META-INF..tổng cộng với tệp kê khai – jaysonpryde

0

Hãy thử đổi tên đơn vị lưu giữ của bạn. Điều này quan trọng, vì tên được sử dụng để xác định đơn vị liên tục tồn tại liên quan đến mỗi EntityManager.

Vì vậy:

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

nên được thay thế bằng (ví dụ):

<persistence-unit name="myUnit"> 
+0

Làm tương tự với ' 'cho mật khẩu BD. –

+2

Đó chỉ là các đơn vị giả ... Tôi đã không đăng tên/giá trị thực tế nhưng nó đã là – jaysonpryde

2

<class>classname</class>

tôi nghi ngờ tổ chức của bạn không được đặt tên classname, vì vậy hãy thử xác định tên classpath đầy đủ (ví dụ: foo.bar.realclassname với realclassna tôi là tên của lớp thực thể của bạn).

+0

Tôi đã chỉ định nó một cách chính xác/đầy đủ ... Vẫn lỗi xảy ra – jaysonpryde

+0

Là cơ sở dữ liệu của bạn-params (aka người dùng, mật khẩu và vân vân) hardcoded trong persistence.xml hoặc bạn có sử dụng bất kỳ trình giữ chỗ nào không? Ý tôi là: bạn có chắc chắn, các thông số tương tự được sử dụng không? – AlexS

+0

Có thay thế được mã hóa cứng trên persistence.xml ... – jaysonpryde

3

thêm này trong file xml của bạn

<property name="javax.persistence.validation.mode">none</property> 
Các vấn đề liên quan