Wildfly 8.1をエンティティを含むEJBプロジェクト(EJB 3.2)と一緒に使用しています。エンティティマネージャを私のBeanの1つに注入しようとすると、次のようになります。
_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]"
]
_
これは、EntityManagerを挿入しようとする私のSessionBeanです。
_@Stateless
public class MitarbeiterDAO implements MitarbeiterDAORemote {
@PersistenceContext
private EntityManager em;
public int writeMitarbeiterToDB(Mitarbeiter m)
{
em.persist(m);
return m.getId();
}
}
_
「project-name」/ ejbModule/META-INFに配置した次の_persistence.xml
_ファイルを指定しました。
_<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>
_
同様の質問とその解決策
<provider>
_を追加することでしたが、これも私には機能しませんでした更新(コメントを参照):
-_@EntityManager
_の代わりに@EntityManager(unitName="mitarbeiter")
を使用しようとしました-上記のSessionBeanは、EntityManager
を挿入しようとする唯一の場所です。
アップデート2(回答のコメントを参照):
persistence.xml
_はディレクトリ_Project/ejbModule/META-INF/
_にありますjar/META-INF/
_に)展開されているのに、どういうわけか展開されていません。手動でコピーして貼り付けると、機能します。何故ですか?どんな助けやヒントも大歓迎です。
考えられる問題のいくつか:
persistence.xml
ファイルの場所が正しくありません。アーカイブのルートにあるMETA-INF/
ディレクトリ内に配置してください。 Mavenを使用する場合は、src/main/resources/META-INF/persistence.xml
になります。persistence.xml
ファイル:行persistence-unit
で<persistence-unit name="mitarbeiter"/>
タグが閉じられています(最後に/
があることに注意してください)<property-name="hibernate.hbm2ddl.auto" value="create-drop"/>
は無効です。私はあなたが望んでいたと思います:<property name="hibernate.hbm2ddl.auto" value="create-drop" />
一般に、あなたの場合のJPA2.1の正しいpersistence.xml
コンテンツは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="mitarbeiter">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>Java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>