【问题标题】:How to simulate the "ON UPDATE NO ACTION" in Hibernate如何在 Hibernate 中模拟“ON UPDATE NO ACTION”
【发布时间】:2016-10-15 21:28:35
【问题描述】:

我有以下行为

@Entity
@Table(schema = "USERCVT", name = "Table1")
public class DeviceMasterDO implements Serializable{

@OneToMany(cascade = CascadeType.ALL, mappedBy = "deviceMasterDO", orphanRemoval = true)
private List<InOutTransactionDO> inOutTransactionDOs;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "deviceMasterDO", orphanRemoval = true)
private List<AdminTransactionDO> adminTransactionDOs;
/*************MORE CODE**************/
}

当我尝试更新 DeviceMasterDO 时,它也会在 InOutTransactionDO 和 AdminTransactionDO 中执行更新。我只想更新 DeviceMasterDO。我怎样才能做到这一点?

问题: 如果 DeviceMasterDO 的 InOutTransactionDO 和 AdminTransactionDO 不为空,则更新工作正常并执行 -

Hibernate: update schema.Table1 set .....
Hibernate: update schema.Table2 set ....
Hibernate: update schema.Table3 set ...

如果 DeviceMasterDO 的 InOutTransactionDO 和 AdminTransactionDO 为 null,则更新失败 -

Hibernate: insert into usercvt.Table2 (a,b,c) values (?, ?, ?)
2016-06-14 17:51:44 ERROR SqlExceptionHelper:146 - [SQL0407] Null values not allowed in column or variable b. 

【问题讨论】:

    标签: java sql hibernate hibernate-mapping


    【解决方案1】:

    请您考虑删除以下内容:

    cascade = CascadeType.ALL

    请声明inOutTransactionDOs如下:

    @OneToMany(mappedBy = "deviceMasterDO", orphanRemoval = true)
    private List<InOutTransactionDO> inOutTransactionDOs;
    

    adminTransactionDOs如下:

    @OneToMany(mappedBy = "deviceMasterDO", orphanRemoval = true)
    private List<AdminTransactionDO> adminTransactionDOs;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2014-10-06
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2022-12-26
      • 2023-01-24
      相关资源
      最近更新 更多