我已经在我的项目中添加了休眠验证器,并用相关的约束注释了我的类。这是我的 pom.xml:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-orm-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-hibernate-validator</artifactId>
</dependency>
这是带注释的类:
public class EmployeeProject extends PanacheEntity {
@NotNull
@ManyToOne
private Employee employee;
@NotNull
@ManyToOne
private Project project;
@Column
@Min(value = 1)
private int quantity;
}
当我尝试通过 Java 代码持久化一个无效的 bean - null 员工/项目和/或非正数 - 时,会引发验证异常,如预期的那样。
但是,当我尝试将无效元组直接保存到数据库中时,令人惊讶的是没有引发异常或数据库错误。实际上原因是employee_project
Hibernate 自动生成的没有验证约束——只有两个外键约束。我知道在 SQL 中没有简单的翻译方法@Min
,但是男孩我至少期待一个 NOT NULL on employee_id
and project_id
!
这是常规行为,还是我错过了什么?