默认情况下,JPA实现在以下情况下检查验证约束生命周期点:
javax.persistence.validation.group.pre-persist
javax.persistence.validation.group.pre-update
javax.persistence.validation.group.pre-remove
在Spring Boot应用程序中,如何自定义此行为?我不想使用persistence.xml
文件
[还有一种方法,也可以在加载实体时启用检查吗?就像我使用@NotNull
一样,我也想声明该实体的任何实例,具有该属性的null只是无效的,因此应该引发异常吗?
您应该能够在Spring Boot应用程序中通过在spring.jpa.properties之前为它们添加前缀,并在application.properties
文件中添加它们的值,来修改这些持久性属性。
例如,javax.persistence.validation.group.pre-update
将是spring.jpa.properties.javax.persistence.validation.group.pre-update
,然后是您希望使用这些生命周期事件来验证的组,如下所示:
spring.jpa.properties.javax.persistence.validation.group.pre-update=javax.validation.groups.Default
关于应用程序的数据完整性,理想情况下,您将要确保基础数据库中仅存在干净,准确的日期,并且存在适当的数据库约束以防止出现任何不正确的数据。例如,您希望对数据库表中的该特定列具有NOT NULL
约束。如果要从Java代码生成数据库模式,则可以考虑使用@NotNull
和@Column(nullable = false)
注释,这将为您生成此约束。