[英]How to update the JPA/Hibernate @Version field in a Spring Data JPA @Modifying @Query query?
[英]How to change UPDATE behavior in Spring Data JPA/Hibernate for specific field?
我必须在实体字段的UPDATE 验证之前添加。
有一个“状态”枚举字段,它有 3 个值(A、B、C)。
因此,如果实体的值为 C,则无法在 A 或 B 上更新它。
SQL 触发器不允许。
我找到了@SQLUpdate 注释和@Where 注释,但找不到如何使用这些注释。
我尝试使用@EntityListeners,但侦听器在已经更新的参数中具有实体 object,但无法从数据库访问当前值。
public class MyEntityListener {
@PreUpdate
private void validateStatusFieldForUpdate(MyEntity entity) {
if (!(entity.getStatus().equals(entity.getStatus()))
&& entity.getStatus().equals(MyEntityStatusEnum.C)) {
throw new ListenerValidationException("Entity with status='C' cannot be updated!");
}
}
}
在持久层(实体和存储库)之外进行这些验证是一种很好的做法
您的案例是经典数据验证,您可以使用 static class 中的验证方法解决,例如,从任何服务 class 调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.