2016-06-14 30 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

謝謝。這工作。 –

相關問題