org.springframework.orm.jpa.JpaSystemException:无法通过反射设置字段值[POST_INSERT_INDICATOR]值 [英] org.springframework.orm.jpa.JpaSystemException: Could not set field value [POST_INSERT_INDICATOR] value by reflection

查看:13500
本文介绍了org.springframework.orm.jpa.JpaSystemException:无法通过反射设置字段值[POST_INSERT_INDICATOR]值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Spring Boot项目工作,并且拥有以下实体:

  @Entity 
public class Ip {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name =IP_ADDR_ID_2)
private Long ID;

@Column(name =IP_ADDRESS_2)
@NotEmpty
私有字符串地址;

@OneToMany(cascade = CascadeType.ALL,mappedBy =ip)
private List< IMAssociation> httpInfoMessages2;


$ / code>

消息实体在下面提供,

  @Entity 
公共类消息{

@Id
@GeneratedValue(strategy = GenerationType。 IDENTITY)
@Column(name =S_ID_2)
private Long sId;

@Column(name =STATUS_ID_2)
private long statusId;

@NotEmpty
@Column(name =STATUS_2)
private String status;

@OneToMany(cascade = CascadeType.ALL,mappedBy =message)
private List< IMAssociation>信息;
}

最后,实体使得Ip和Message之间的关联为提供,

  @Entity 
@Table(name =IP_HTTP_MESSAGE)
// @ IdClass( AssociationId.class)
public class IMAssociation implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Id
@Column(name =IP_ADDRESS_ID)
private长度ipAddressId;

@Id
@Column(name =HTTP_MESSAGE_ID)
private Long httpMessageId;

@ManyToOne
@PrimaryKeyJoinColumn(name =ipAddressId,referencedColumnName =IP_ADDR_ID_2)
// @JoinColumn(name =ipAddressId,updatable = false,insertable = false,referencedColumnName =IP_ADDR_ID_2)
私人ip ip;

@ManyToOne
@PrimaryKeyJoinColumn(name =httpMessageId,referencedColumnName =S_ID_2)
// @JoinColumn(name =httpMessageId,updatable = false,insertable = false,referencedColumnName =S_ID_2)
私人消息消息;


// @ManyToOne
@JoinColumn(name =IP_ADDRESS_2,updatable = false,insertable = false,referencedColumnName =IP_ADDRESS_2)
私有字符串地址;

@JoinColumn(name =STATUS_CODE,updatable = false,insertable = false,referencedColumnName =STATUS_ID_2)
private长码;
$ b $ @ @CoinColumn(name =STATUS_MESSAGE,updatable = false,insertable = false,referencedColumnName =STATUS_2)
private String codeMessage;

$ b public IMAssociation(){
}

public IMAssociation(Long code,String codeMessage){
this.code = code;
this.codeMessage = codeMessage;


$ b $ / code>

  List< IMAssociation>列表< IMAssociation>  imAssociations = new ArrayList<>(); 

for(int j = 0; j <5; j ++){

IMAssociation imAssociation = new IMAssociation(Long.valueOf(integerListEntry.getKey()),
消息);
imAssociations.add(imAssociation);
}


ip ip = new Ip('127.0.0.1',imAssociations);

清单< Ip> ips = new ArrayList<>();
ips.add(ip);

当我试图保存 List< ip> 在数据库中,我得到以下错误:

 引起:org.springframework.orm.jpa.JpaSystemException:可能未通过反射设置字段值[POST_INSERT_INDICATOR]值:[class com.ef.entity.IMAssociation.id] com.ef.entity.IMAssociation.id的setter;嵌套异常是org.hibernate.PropertyAccessException:由反射无法设置字段值[POST_INSERT_INDICATOR]的值:[类com.ef.entity.IMAssociation.id] com.ef.entity.IMAssociation.id 
$ B的设定器
$ b导致:org.hibernate.PropertyAccessException:无法通过反射设置字段值[POST_INSERT_INDICATOR]值:[class com.ef.entity.IMAssociation.id] com.efity.IMAssociation.id的setter
at org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:58)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.mapping.Component $ ValueGenerationPlan.execute(Component.java:419)〜[冬眠核-5.0.12.Final.jar:5.0.12.Final]
。在org.hibernate.id.CompositeNestedGeneratedValueGenerator .GeneratorId(AbstractSaveEventListener.java: 101)〜[休眠核-5.0.12.Final.jar:5.0.12.Final]在org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67
)〜 [hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189)〜[hibernate-core-5.0。 12.Final.jar:5.0.12.Final]
在org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132)〜[hibernate-core-5.0.12.Final.jar:5.0 .12.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.jpa.event的org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
。 internal.core.JpaPersistEventListener $ 1.cascade(JpaPersistEventListener.java:80)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Fina l]
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.internal .Cascade.cascadeProperty(Cascade.java:162)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade。 java:431)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:363)〜[hibernate -core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326)〜[hibernate-core-5.0.12。 Final.jar:5.0.12.Final]
在org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162)〜[hibernate-core-5.0.12.Final.jar:5.0.12 .Final]
at org.hibernate.engine.internal.Cascade.cascade( Cascade.java:111)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456)〜 [休眠芯-5.0.12.Final.jar:5.0.12.Final]
。在org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:278)〜[冬眠核-5.0。 12.Final.jar:5.0.12.Final]
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178)〜[hibernate-core-5.0.12.Final.jar:5.0 .12.Final]在org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:109)
〜[冬眠核-5.0.12.Final.jar:5.0.12.Final]
。在org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67)〜[冬眠-的EntityManager-5.0.12.Final.jar:5.0.12.Final]
。在org.hibernate.event.internal.DefaultPersistEventListener.entit yIsTransient(DefaultPersistEventListener.java:189)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132 )〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58)〜[hibernate-core- 5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:775)〜[hibernate-core-5.0.12.Final.jar:5.0 .12.Final]
在org.hibernate.internal.SessionImpl.persist(SessionImpl.java:748)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.jpa.spi的org.hibernate.internal.SessionImpl.persist(SessionImpl.java:753)〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
。 AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at sun.reflect.Generat edMethodAccessor19.invoke(Unknown Source)〜[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_144]
at java.lang.reflect .Method.invoke(Method.java:498)〜[na:1.8.0_144]


导致:java.lang.IllegalArgumentException:无法设置java.lang.Long字段com .ef.entity.IMAssociation.id to org.hibernate.id.IdentifierGeneratorHelper $ 2
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)〜[na:1.8.0_144]
at sun .reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)〜[na:1.8.0_144]
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)〜[na:1.8.0_144]

这里有什么问题?

Update



我改变了 IMAssociation

  @Entity 
@Table(name =IP_HTTP_MESSAGE)
//@IdClass(AssociationId.class)
public class IMAssociation implements Serializable {

// @Id
// @GeneratedValue(strategy = GenerationType.IDENTITY)
// private Long id;

@Id
@Column(name =IP_ADDRESS_ID)
private长度ipAddressId;

@Id
@Column(name =HTTP_MESSAGE_ID)
private Long httpMessageId;

@ManyToOne
@PrimaryKeyJoinColumn(name =IP_ADDRESS_ID,referencedColumnName =IP_ADDR_ID_2)
// @JoinColumn(name =ipAddressId,updatable = false,insertable = false,referencedColumnName =IP_ADDR_ID_2)
私人ip ip;

@ManyToOne
@PrimaryKeyJoinColumn(name =HTTP_MESSAGE_ID,referencedColumnName =S_ID_2)
// @JoinColumn(name =httpMessageId,updatable = false,insertable = false,referencedColumnName =S_ID_2)
私人消息消息;


// @ManyToOne
@JoinColumn(name =IP_ADDRESS_2,updatable = false,insertable = false,referencedColumnName =IP_ADDRESS_2)
私有字符串地址;

@JoinColumn(name =STATUS_CODE,updatable = false,insertable = false,referencedColumnName =STATUS_ID_2)
private长码;
$ b $ @ @CoinColumn(name =STATUS_MESSAGE,updatable = false,insertable = false,referencedColumnName =STATUS_2)
private String codeMessage;

$ b public IMAssociation(){
}

public IMAssociation(Long code,String codeMessage){
this.code = code;
this.codeMessage = codeMessage;


$ / code>

现在,我在运行应用程序,

 原因:javax.persistence.EntityExistsException:具有相同标识符值的不同对象已与会话关联: [com.ef.entity.IMAssociation#IMAssociation {,ipAddressId = null,httpMessageId = null,ip = null,message = null,address ='null',code = 404,codeMessage ='404_Not Found'}] 
在org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1664)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
在org.hibernate.jpa。 spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl .java:1608)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist( AbstractEntityManagerImpl.java:1152)〜[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)〜[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[na:1.8.0_144]
at java.lang.reflect.Method.invoke(Method.java:498)〜[na: 1.8.0_144]


解决方案

可能没有需要 ipAddressId httpMessageId 我认为保存这些值的列在dblevel中由自动生成, @PrimaryKeyJoinColumn 注释和值可以通过 ip.getMessage() IMAssociation ip.getId()


I work with a Spring Boot project and I have the following entities,

@Entity
public class Ip {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "IP_ADDR_ID_2")
    private Long id;

    @Column(name = "IP_ADDRESS_2")
    @NotEmpty
    private String address;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ip")
    private List<IMAssociation> httpInfoMessages2;

}

The message entity is provided below,

@Entity
public class Message {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "S_ID_2")
    private Long sId;

    @Column(name = "STATUS_ID_2")
    private Long statusId;

    @NotEmpty
    @Column(name = "STATUS_2")
    private String status;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "message")
    private List<IMAssociation> message;
}

And, lastly, the entity make the association between the Ip and the Message is provided,

@Entity
@Table(name = "IP_HTTP_MESSAGE")
//@IdClass(AssociationId.class)
public class IMAssociation implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Id
    @Column(name = "IP_ADDRESS_ID")
    private Long ipAddressId;

    @Id
    @Column(name = "HTTP_MESSAGE_ID")
    private Long httpMessageId;

    @ManyToOne
    @PrimaryKeyJoinColumn(name = "ipAddressId", referencedColumnName = "IP_ADDR_ID_2")
    //    @JoinColumn(name = "ipAddressId", updatable = false, insertable = false, referencedColumnName = "IP_ADDR_ID_2")
    private Ip ip;

    @ManyToOne
    @PrimaryKeyJoinColumn(name = "httpMessageId", referencedColumnName = "S_ID_2")
    //    @JoinColumn(name = "httpMessageId", updatable = false, insertable = false, referencedColumnName = "S_ID_2")
    private Message message;


//    @ManyToOne
    @JoinColumn(name = "IP_ADDRESS_2", updatable = false, insertable = false, referencedColumnName = "IP_ADDRESS_2")
    private String address;

    @JoinColumn(name = "STATUS_CODE", updatable = false, insertable = false, referencedColumnName = "STATUS_ID_2")
    private Long code;

    @JoinColumn(name = "STATUS_MESSAGE", updatable = false, insertable = false, referencedColumnName = "STATUS_2")
    private String codeMessage;


    public IMAssociation() {
    }

    public IMAssociation(Long code, String codeMessage) {
        this.code = code;
        this.codeMessage = codeMessage;
    }

}

The List<IMAssociation> is made therough the code,

List<IMAssociation> imAssociations = new ArrayList<>();

for(int j =0; j < 5; j++){

     IMAssociation imAssociation = new IMAssociation(Long.valueOf(integerListEntry.getKey()),
                                            message);
    imAssociations.add(imAssociation);
}


Ip ip = new Ip('127.0.0.1', imAssociations); 

List<Ip> ips = new ArrayList<>();
ips.add(ip);

When I tried to persist a List<Ip> in the database, I get the following error,

Caused by: org.springframework.orm.jpa.JpaSystemException: Could not set field value [POST_INSERT_INDICATOR] value by reflection : [class com.ef.entity.IMAssociation.id] setter of com.ef.entity.IMAssociation.id; nested exception is org.hibernate.PropertyAccessException: Could not set field value [POST_INSERT_INDICATOR] value by reflection : [class com.ef.entity.IMAssociation.id] setter of com.ef.entity.IMAssociation.id


Caused by: org.hibernate.PropertyAccessException: Could not set field value [POST_INSERT_INDICATOR] value by reflection : [class com.ef.entity.IMAssociation.id] setter of com.ef.entity.IMAssociation.id
    at org.hibernate.property.access.spi.SetterFieldImpl.set(SetterFieldImpl.java:58) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.mapping.Component$ValueGenerationPlan.execute(Component.java:419) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.id.CompositeNestedGeneratedValueGenerator.generate(CompositeNestedGeneratedValueGenerator.java:97) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:101) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:765) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:758) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener$1.cascade(JpaPersistEventListener.java:80) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:431) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:363) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:326) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:456) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:278) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:109) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId(JpaPersistEventListener.java:67) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:189) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:132) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:58) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:775) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:748) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:753) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1146) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]


Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field com.ef.entity.IMAssociation.id to org.hibernate.id.IdentifierGeneratorHelper$2
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) ~[na:1.8.0_144]
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) ~[na:1.8.0_144]
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81) ~[na:1.8.0_144]

What is the issue here?

Update

I have changed the IMAssociation class and its provided below,

@Entity
@Table(name = "IP_HTTP_MESSAGE")
//@IdClass(AssociationId.class)
public class IMAssociation implements Serializable {

//    @Id
//    @GeneratedValue(strategy = GenerationType.IDENTITY)
//    private Long id;

    @Id
    @Column(name = "IP_ADDRESS_ID")
    private Long ipAddressId;

    @Id
    @Column(name = "HTTP_MESSAGE_ID")
    private Long httpMessageId;

    @ManyToOne
    @PrimaryKeyJoinColumn(name = "IP_ADDRESS_ID", referencedColumnName = "IP_ADDR_ID_2")
//    @JoinColumn(name = "ipAddressId", updatable = false, insertable = false, referencedColumnName = "IP_ADDR_ID_2")
    private Ip ip;

    @ManyToOne
    @PrimaryKeyJoinColumn(name = "HTTP_MESSAGE_ID", referencedColumnName = "S_ID_2")
//    @JoinColumn(name = "httpMessageId", updatable = false, insertable = false, referencedColumnName = "S_ID_2")
    private Message message;


    //    @ManyToOne
    @JoinColumn(name = "IP_ADDRESS_2", updatable = false, insertable = false, referencedColumnName = "IP_ADDRESS_2")
    private String address;

    @JoinColumn(name = "STATUS_CODE", updatable = false, insertable = false, referencedColumnName = "STATUS_ID_2")
    private Long code;

    @JoinColumn(name = "STATUS_MESSAGE", updatable = false, insertable = false, referencedColumnName = "STATUS_2")
    private String codeMessage;


    public IMAssociation() {
    }

    public IMAssociation(Long code, String codeMessage) {
        this.code = code;
        this.codeMessage = codeMessage;
    }
}

Now, I get the following error while I run the app,

Caused by: javax.persistence.EntityExistsException: A different object with the same identifier value was already associated with the session : [com.ef.entity.IMAssociation#IMAssociation{, ipAddressId=null, httpMessageId=null, ip=null, message=null, address='null', code=404, codeMessage='404_Not Found'}]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1664) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1152) ~[hibernate-entitymanager-5.0.12.Final.jar:5.0.12.Final]
    at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]

解决方案

It might be that there is no need for ipAddressId and httpMessageId I think that columns holding those values are generated automatically in dblevel by @PrimaryKeyJoinColumn annotations and the value can be accessed in IMAssociation by ip.getMessage() and ip.getId().

这篇关于org.springframework.orm.jpa.JpaSystemException:无法通过反射设置字段值[POST_INSERT_INDICATOR]值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆