gpt4 book ai didi

java - 传递到持久化的分离实体 - Hibernate + JavaFX

转载 作者:行者123 更新时间:2023-12-02 10:08:30 25 4
gpt4 key购买 nike

我是 Hibernate 新手,我需要帮助。

我有一个名为 Kasa 的表,它有 3 个属性 - id、地址和 account_id。我的表中有 12 行。我想使用 Hibernate 映射它并使用 Java 添加新的,所以我这样做了:

   @Entity
@Table(name = "kasa")
public class Kasa {

@Id
@GeneratedValue(generator = "incrementor")
@GenericGenerator(name = "incrementor", strategy = "increment")
@Column(name = "ID_KASA")
private int id;

@Column(name = "ADRES")
private String adres;

@Column(name = "ID_KONTO")
private int id_konta;
}

我也有 getter 和 setter,但不需要复制它。

现在我想向我的数据库添加新行,如下所示:

EntityManagerFactory entityManagerFactory = 
Persistence.createEntityManagerFactory("org.hibernate.jpa");

Kasa kasa = new Kasa();

kasa.setId(1);
kasa.setAdres("Kolorowaa");
kasa.setId_konta(2);

EntityManager entityManager =
entityManagerFactory.createEntityManager();
entityManager.persist(kasa);
entityManager.getTransaction().commit();
entityManagerFactory.close();

我收到这样的错误:javax.persistence.PersistenceException:org.hibernate.PersistentObjectException:传递给持久化的分离实体:model.beans.Kasa

它指向这一行:entityManager.persist(kasa);

我认为问题可能出在我的“Kasa”类的 ID 上,因为它是自动生成的。

对于我的配置,我使用 persistence.xml 文件 - 与数据库的连接工作正常。请帮忙:)

最佳答案

不要设置ID!如果您这样做,JPA 事物 kasa 已在数据库中。

数据库 ID 必须由 JPA 设置。你必须定义一些策略应该计算 key 。这就是所有这些...@Generate...标签的作用。

关于java - 传递到持久化的分离实体 - Hibernate + JavaFX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55163977/

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