Hibernate nullable = true在@ManyToOne关系中不起作用

时间:2016-09-02 16:32:32

标签: hibernate many-to-one

这是我的情景, 我有汽车,属于经销商或用户(不是同时属于两者)。

所以我的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?

感谢。

0 个答案:

没有答案