Hibernate 插入具有联接列的实体

Hibernate 插入具有联接列的实体,hibernate,jpa,insert,joincolumn,Hibernate,Jpa,Insert,Joincolumn,我想在数据库中插入具有两个联接列的实体“CategorieTresorerie”。问题是,其中一个(RegroupmentCategorieTreeSorrie)正在尝试自动插入。。。但这个已经在数据库中,所以我有一个重复的键值冲突异常 错误代码: Hibernate: insert into "RegroupementCategorieTresorerie" ("RegroupementCategorieTresorerieCode") values (?) 2015-12-29 15:32:

我想在数据库中插入具有两个联接列的实体“CategorieTresorerie”。问题是,其中一个(RegroupmentCategorieTreeSorrie)正在尝试自动插入。。。但这个已经在数据库中,所以我有一个重复的键值冲突异常

错误代码:

Hibernate: insert into "RegroupementCategorieTresorerie" ("RegroupementCategorieTresorerieCode") values (?)
2015-12-29 15:32:05.207  WARN 6960 --- [tomcat-http--26] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23505
2015-12-29 15:32:05.208 ERROR 6960 --- [tomcat-http--26] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: duplicate key value violates unique constraint "RegroupementCategorieTresorerie_PK"
  Détail : Key ("RegroupementCategorieTresorerieCode")=(MARGE_BRUT) already exists.
2015-12-29 15:32:05.210  INFO 6960 --- [tomcat-http--26] o.h.e.j.b.internal.AbstractBatchImpl     : HHH000010: On release of batch it still contained JDBC statements
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [RegroupementCategorieTresorerie_PK]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
我要插入的类:

@Entity
public class CategorieTresorerie
    {
    @Id
    @Column(name="CategorieTresorerieID")
    @SequenceGenerator(name = "CategorieTresorerie_CategorieTresorerieID_seq", sequenceName = "\"CategorieTresorerie_CategorieTresorerieID_seq\"", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CategorieTresorerie_CategorieTresorerieID_seq")
    private Integer categorieTresorerieId;

    @MapsId
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "regroupementCategorieTresorerieCode", insertable = false, updatable = false)
    @Fetch(FetchMode.JOIN)
    private RegroupementCategorieTresorerie regroupement;

    @MapsId
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "typeCategorieTresorerieId", insertable = false, updatable = false)
    @Fetch(FetchMode.JOIN)
    private TypeCategorieTresorerie typeCategorieTresorerie;

    private Boolean estActif = true;
Join类RegroupmentCategorieTreesOrrie是hibernate尝试自动插入的一个:

@Entity
public class RegroupementCategorieTresorerie implements EstTraductible
{
    @Id
    private String regroupementCategorieTresorerieCode;

    @Transient
    private String libelle;
联接列类型分类目录:

@Entity
public class TypeCategorieTresorerie
    {
    @Id
    @Column(name = "TypeCategorieTresorerieID")
    private Integer typeCategorieTresorerieId;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "CategorieTresorerieFamilleID", insertable = false, updatable = false)
    @Fetch(FetchMode.JOIN)
    private CategorieTresorerieFamille famille;
在不自动插入联接列的情况下,如何插入CategorieTresorerie


谢谢您的帮助。

在没有看到插入代码的情况下,不确定您到底想做什么,但是如果您试图加入一个已经存在的实体,请尝试获取它并指向获取的实体(带有id)因此hibernate不会尝试创建新记录。

您应该添加显示如何持久化CategorieTresorerie的代码。您好,感谢您的帮助,我删除了“insertable=false,Updateable=false”,现在它工作得很好!