这是一个独立的 Java 应用程序,而不是 Web 应用程序。所以当我像这样坚持对象时
public <T> T create(T t) {
em.getTransaction().begin();
em.persist(t);
em.flush();
em.getTransaction().commit();
return t;
}
即使在数据库中正确创建了具有正确数据和 id 的新行,对象内部仍然为空id
。T t
通常在我的 web 应用程序中使用@EJB
,id
在我持久化之后立即可用,因为它将实体对象持久化到我的持久化上下文中,我不确定我是否在这里有我的持久化上下文?
这就是我在 @Entity 类中映射我的 id 的方式
@Id
@Basic(optional = false)
@Column(name = "ID")
private Long id;
我也在数据库中创建了这个表的 id AUTO_INCREMENT
,就像这样
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>
请帮忙,我不确定我在这里做错了什么。