次の現場でJavaEEフレームワークを使用するということで現在JavaEEの自己学習をしています。
xhtmlからバッキングビーンに値を受け渡すことまではできたのですが、それをDB処理に受け渡すという段階で詰まっています。EntityManager型の変数emがnullになってしまうのです。
使用しているIDEはeclipse4.5.1です。
DBはJavaDBを使用しています。
↓DBに接続する記述を書いたクラス
package db; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import entity.Iteminfo; @Stateless public class ItemInfoDb { @PersistenceContext EntityManager em; public void create(Iteminfo obj) { System.out.println(em); em.persist(obj); } }
↓persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1" 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"> <persistence-unit name="TestItem" transaction-type="RESOURCE_LOCAL"> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:derby:C:\javadb\Item_db;create=true"/> <property name="javax.persistence.jdbc.user" value="test"/> <property name="javax.persistence.jdbc.password" value="test"/> <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/> </properties> </persistence-unit> </persistence>
↓バッキングビーン
package bean; import java.io.Serializable; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named; import db.ItemInfoDb; import entity.Iteminfo; @SessionScoped @Named public class HelloBean implements Serializable { private int id; private String name; private String count; private String price; @Inject ItemInfoDb db; public String add() { Iteminfo itemInfo = new Iteminfo(); itemInfo.setId(id); itemInfo.setName(name); itemInfo.setCount(count); itemInfo.setPrice(price); ItemInfoDb db = new ItemInfoDb(); db.create(itemInfo); return "main.xhtml"; } //セッター、ゲッター }
以前同じ質問をした際にアドバイスをいただいてpersistence.xmlに使用しているDBについて記入したのですが、サーバーを立ち上げる以前にエラーになってしまいます。。
サイトや本を参考にしたのですが、一向に改善しません、、詳しい方回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。