如果我在JPA JAVA中同时使用这些注释呢?
我完全不理解这些注释之间的区别。 如果这是多余的,你能解释一下吗如果我在JPA JAVA中同时使用这些注释呢?,java,jpa,orm,Java,Jpa,Orm,我完全不理解这些注释之间的区别。 如果这是多余的,你能解释一下吗 @NotNull @Basic(optional = false) @Column(nullable = false) private int userId; 提前感谢。@NotNull:您正在定义的注释是,除了null参数外,代码将不会删除任何其他注释,如果您提供null参数,注释将引发RuntimeException @基本:此注释表示要持久化属性,并使用标准映射。它有一些参数,允许您指定是否延迟加载属性以及属性是否可
@NotNull
@Basic(optional = false)
@Column(nullable = false)
private int userId;
提前感谢。@NotNull:您正在定义的注释是,除了null参数外,代码将不会删除任何其他注释,如果您提供null参数,注释将引发RuntimeException @基本:此注释表示要持久化属性,并使用标准映射。它有一些参数,允许您指定是否延迟加载属性以及属性是否可为空
@Column允许您在数据库中指定要将属性持久化到的列的名称。以下是我注意到的区别 @NotNull来自javax.validation JSR303,它定义bean的属性是否可以为null,设置该属性表示属性不能为null,这称为约束,并在validation.validate()方法中进行验证 @Basic(optional=false)来自javax.persistence JSR317,有基本类型和集合类型,它表示逻辑模型可以为null或不设置为false可选表示属性在jpa逻辑模型上不能为null。还允许您声明属性的获取策略 @Column(nullable=false)来自javax.persistence JSR317,它与数据库的物理映射(DDL)有关,告诉数据库该属性在数据库中不能为null。(表创建中的NOTNULL语句) 正如您所看到的,第一个应用于验证API,第二个和第三个应用于JPA API,但一个应用于逻辑模式,另一个应用于物理模式。可能重复: