2016-06-14 67 views
1

我有以下DO如何模拟 “ON UPDATE NO ACTION” 在Hibernate中

@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不为null,则更新工作正常,并执行 -

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. 

回答

0

请您考虑删除以下内容:

cascade = CascadeType.ALL

请声明inOutTransactionDOs如下:

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

adminTransactionDOs如下:

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

谢谢。这工作。 –

相关问题