java - 将持久或分离的 hibernate 对象与其当前数据库状态进行比较的最佳方法是什么?

标签 java hibernate spring

我正在使用 Hibernate 和 Spring。

我正在编写一个服务方法来保存一个对象(费用),该对象具有非常具体的业务规则,关于何时允许根据当前的数据库状态保存该对象。例如,如果 charge.status.equals(Status.CANCELED) 则不应更新。 (还有其他更具体的规则,但这应该是一个很好的示例)其他代码可能会加载已取消的费用并错误地将状态更改为已批准,然后调用 save(charge)。无论传入的费用是持久的还是分离的,save 方法都需要能够识别此错误。

是否有一种简单的方法可以将内存中的对象与数据库中对象的当前持久状态进行比较?

最佳答案

我认为这会起作用:


public void save(Charge charge) {
    Session session = sessionFactory.getCurrentSession();
    Charge copy = new Charge(charge);
    session.refresh(charge);
    ...
    //various business logic checks between copy and charge
    ...
    session.saveOrUpdate(charge);
}

如果这有缺陷或有更好的方法,我当然会感激任何建议。

关于java - 将持久或分离的 hibernate 对象与其当前数据库状态进行比较的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721190/

相关文章:

java - 返回类型 ResponseEntity<?> 和 ResponseEntity<Object> 和 ResponseEntity<MyCustomClass> 有什么区别

java - 如何告诉 hibernate 在日志中打印列名而不是列号?

java - 条件注入(inject)bean

java - 为什么 Java 中 -Infinity +Infinity 的平方根是平方根?

java - 尝试读取文件时正则表达式匹配失败(Java 中的 SIC 汇编器)

java - "mappedBy reference an unknown target entity property"使用 hibernate

java - 无法使用 Spring Cacheable 在 Aerospike Cache 中添加记录

java - 如何在Spring Rest Request中访问内部json对象

java - 如何在我的(字符串)时间上增加 10 分钟?

java - 在 java 中使用 Hibernate 4.0.1 + Spring 3.2.5 时出现错误