gpt4 book ai didi

jpa - @ManyToOne 可选标志与 @JoinColumn 可为空标志有什么区别?

转载 作者:行者123 更新时间:2023-12-01 11:22:46 25 4
gpt4 key购买 nike

我有以下内容来定义我的实体上不能为空的公司:

@ManyToOne(optional = false)
@JoinColumn(nullable = false)
private Company company;

@ManyToOne 注释上的“optional = false”和@JoinColumn 注释上的“nullable = false”有什么区别。还是设置它们都是多余的?

最佳答案

@ManyToOne在所谓的逻辑模型上运行,即对象关系映射的面向对象的一面。 optional=false的语义这里是:

Whether the association is optional. If set to false then a non-null relationship must always exist.



因此 JPA 引擎期望底层存储始终提供一个可以转换为 Company 的值。目的。
@JoinColumn对物理模型进行操作,即事物在数据存储(数据库)中的实际布置方式。指定 nullable = false将使 DB 列不可为空。

@JoinColumn(nullable = false)被省略,该列可以为空。人们可以在那里插入一个空值,数据库会很乐意接受它。但是,如果有人试图通过 JPA 读取该值,则 JPA 引擎会提出异议,因为它期望一个可以转换为 Company 的值。对象始终存在,如 @ManyToOne(optional = false) 所指定.

关于jpa - @ManyToOne 可选标志与 @JoinColumn 可为空标志有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40379807/

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