Tôi đang sử dụng Wildfly 8.1 cùng với một dự án EJB (EJB 3.2) chứa các thực thể. Khi cố gắng để tiêm Entity Manager vào một trong Đậu của tôi nhận được như sau:Tại sao đơn vị lưu giữ có tên là null khi persistence.xml tồn tại
JBAS011440: Can't find a persistence unit named null in deployment \"EntitiesProject.jar\""},
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"EntitiesProject.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"EntitiesProject.jar\".beanmanager]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.HandleDelegate is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.InstanceName is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.InAppClientContainer is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.Validator is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.ORB is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.ValidatorFactory is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]"
]
Đây là SessionBean của tôi, nơi tôi cố gắng để tiêm EntityManager:
@Stateless
public class MitarbeiterDAO implements MitarbeiterDAORemote {
@PersistenceContext
private EntityManager em;
public int writeMitarbeiterToDB(Mitarbeiter m)
{
em.persist(m);
return m.getId();
}
}
tôi đã xác định các persistence.xml
tập tin sau đây mà tôi đặt vào "project-name"/ejbModule/META-INF.
<persistence-unit name="mitarbeiter">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property-name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
và câu hỏi tương tự giải pháp của họ
- Can't find persistence unit gợi ý để bao gồm một persistence.xml
- Injecting entityManager in Wildfly/Jboss chỉ hiện ra rằng có thể có một thư mục nơi persistence.xml tôi thuộc về. Tôi đã thử thư mục đó nhưng vẫn nhận được thông báo lỗi tương tự.
- Cannot find persistence unit from persistence.xml Trong khi điều này là không chính xác cùng một câu hỏi giải pháp là để thêm một
<provider>
để persistence.xml, nhưng điều này cũng không làm việc cho tôi
Cập nhật (xem ý kiến):
- Tôi đã cố gắng sử dụng @EntityManager(unitName="mitarbeiter")
thay chỉ @EntityManager
- Session Bean trình bày ở trên là nơi duy nhất tôi cố gắng tiêm EntityManager
Cập nhật 2 (xem ý kiến của các câu trả lời):
persistence.xml
là trong thư mụcProject/ejbModule/META-INF/
- Thư mục này được bao gồm trong con đường xây dựng
- Bằng cách nào đó nó không nhận được triển khai trong khi các file khác trong cùng thư mục là (đến
jar/META-INF/
). Nếu tôi sao chép & dán theo cách thủ công, nó hoạt động. Tại sao vậy?
Bất kỳ trợ giúp và gợi ý nào được đánh giá cao.
Các bạn đã thử xác định 'bất động sản bắt buộc unitName' trên '@ PersistenceContext' chú thích của mình? –
vâng tôi đã thử sử dụng '@PersistenceContext (unitName =" mitarbeiter ")' thay vì chỉ '@ PersistenceContext'. – Jbartmann
OK, chỉ cần kiểm tra. Nó không phải là cần thiết trừ khi có nhiều hơn một đơn vị kiên trì. –