当前位置: 首页 > 知识库问答 >
问题:

分离的实体传递给persist-Hibernate JavaFX

辛盛
2023-03-14

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

我有一个名为Kasa的表,它有3个属性-id、address和account\u 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;
     }

我也有能手和二传手,但不需要复制。

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

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.PeristenceException:org.hibernate.PeristentObjectException:分离的实体传递给持久:model.beans.Kasa

它指向这一行:entityManager。持久(kasa);

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

对于我的配置,我使用的是持久性。xml文件-与db的连接工作正常。请帮助:)

共有1个答案

宣煜
2023-03-14

不要设置ID!如果你这样做,JPA的东西kasa已经在数据库中了。

数据库id必须由JPA设置。因此,您必须定义一些策略,即如何计算密钥。这就是所有这些@生成标签可以。

 类似资料: