org.jvnet.hk2.annotations.Optional;
...
@Entity
public class Contact {
@NotBlank
private String contactUserId;
@Optional // Will it work?
private Boolean main = Boolean.FALSE;
我有一个从数据库接收数据的联系人类,但是一种联系人可能会收到 Boolean main 而另一种可能不会。注释是否正确?我找不到任何好的解释,不确定 id 实际上是一个正确的注释。
您在代码中使用的 @Optional 注释不是标准的 Java 注释,而是来自 org.jvnet.hk2.annotations 包,它是 HK2 框架的一部分。
HK2中@Optional注解的目的是表明依赖注入目标字段或参数是可选的,这意味着如果容器找不到合适的绑定,它不应该抛出异常。
但是,在您的代码片段中,您似乎正在尝试使用 @Optional 在持久性上下文(即数据库存储)中将主字段标记为可选。这不是实现此目标的正确方法。相反,您应该使用 @Column(nullable = true) 注释在数据库模式中将主字段标记为可为空。这将允许该字段在数据中未提供时在数据库中具有 NULL 值。
这是一个示例,说明如何注释主字段以使其可为空:
@Entity
public class Contact {
@NotBlank
private String contactUserId;
@Column(nullable = true)
private Boolean main = Boolean.FALSE;
// ...
}
有了这个注解,当一个Contact实例持久化到数据库时,如果数据中没有提供main字段,它的值将是NULL。