gpt4 book ai didi

java - JPA:如何在独立的java应用程序中持久化后获取Id

转载 作者:搜寻专家 更新时间:2023-11-01 02:14:19 24 4
gpt4 key购买 nike

这是一个独立的 Java 应用程序,而不是 Web 应用程序。所以当我像这样坚持对象时

public <T> T create(T t) {
em.getTransaction().begin();
em.persist(t);
em.flush();
em.getTransaction().commit();
return t;
}

T t 对象中的 id 仍然是 null,即使在数据库中正确地创建了一个具有正确数据和 id 的新行。通常在我使用 @EJB 的网络应用程序中,id 在我坚持后立即可用,因为它将实体对象持久化到我的持久性上下文中,我不确定我是否有我的持久性上下文在这里?

这就是我将我的 id 映射到我的@Entity 类中的方式

@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>

请帮忙,我不确定我在这里做错了什么。

最佳答案

尝试在您的 ID 字段上添加一个 @GeneratedValue

关于java - JPA:如何在独立的java应用程序中持久化后获取Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com