これは Web アプリケーションではなく、スタンドアロンの Java アプリケーションです。したがって、このようにオブジェクトを永続化すると
public <T> T create(T t) {
em.getTransaction().begin();
em.persist(t);
em.flush();
em.getTransaction().commit();
return t;
}
正しいデータと ID を持つ新しい行がデータベース内に正しく作成されても、オブジェクトのid
内部はまだ null です。通常、永続化コンテキストにエンティティ オブジェクトを永続化するため、永続化直後に使用できるT t
を使用する Web アプリでは@EJB
、ここに永続化コンテキストがあるかどうかわかりません。id
これは、@Entityクラス内でIDをマッピングした方法です
@Id
@Basic(optional = false)
@Column(name = "ID")
private Long id;
AUTO_INCREMENT
また、このように、データベースでこのテーブルのIDを作成します
CREATE TABLE Config
(
ID int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (ID)
)
これが私のEntityManagerを取得する方法です
EntityManagerFactory emf = Persistence.createEntityManagerFactory("CorePU");
em = emf.createEntityManager();
これが私の中身ですpersistence.xml
<persistence-unit name="CorePU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.wf.docsys.core.model.Config</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/XNINFODB"/>
<property name="javax.persistence.jdbc.password" value="xxx"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="xxx"/>
</properties>
ここで何が間違っていたのかわかりません。