这是我的情景, 我有汽车,属于经销商或用户(不是同时属于两者)。
所以我的Car实体与Dealer和User有@ManyToOne关系,但其中一个需要为null,所以我在两者中都加了nullable = true来支持它。
这是我的代码:
@Entity
@Table(name = "car")
@XmlRootElement
public class Car implements Serializable{
@Id
@Column(name = "id", unique = true, nullable = false, columnDefinition = "serial")
@SequenceGenerator(name = "pk_sequence", sequenceName = "car_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_sequence")
@Generated(GenerationTime.INSERT)
private Long id;
@ManyToOne
@JoinColumn(name = "dealer", nullable = true)
private Dealer dealer;
@ManyToOne
@JoinColumn(name = "user", nullable = true)
private User user;
但是当我尝试插入没有经销商的汽车时,我得到了这个:
错误:“经销商”栏中的空值违反了非空约束。
据我所知,这是因为Hibernate在数据库中产生了外键限制。但是之后: - “nullable = true”的原因是什么? - 我如何解决这个问题,我需要有一个@ManyToOne关系,它可以为null?
感谢。