gpt4 book ai didi

java - 复合标识符的任何部分都不能为空

转载 作者:行者123 更新时间:2023-11-30 10:49:10 24 4
gpt4 key购买 nike

<分区>

我正在尝试创建一个复合主键映射,但没有成功。

先决条件是:

  • 关系可能是@IdClass注解
  • 我需要与人实体的关系是@ManyToOne

我的代码:

@Entity
@IdClass(PhonePK.class)
public class Phone implements Serializable{
@Id
@Column(name = "codigo", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long code;

@Id
@ManyToOne
@JoinColumn(name = "person", referencedColumnName = "code", nullable = false)
private Person person;

@Basic
@Column(name = "number", nullable = false)
private Integer number;

//getters and setters
//equals and hashcode
}

public class PhonePK implements Serializable {
private Long code;
private Long person;

public PhonePK(){}

public PhonePK(Long code, Long person) {
this.code = code;
this.person = person;
}

//getters and setters
//equals and hashcode
}

public class Person implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "code", nullable = false)
private Long code;

//getters and setters
//equals and hashcode
}

他们以我努力坚持的方式:

//a lot of code
//em = Entitymanager
em.persist(person);
phone.setPerson(person);
em.persist(phone);

我收到的错误是:

Caused by: javax.persistence.PersistenceException: org.hibernate.HibernateException: No part of a composite identifier may be null

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