Еще минусы в:
http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/
где это:
@OneToMany(fetch = FetchType.LAZY,
cascade = {CascadeType.PERSIST,CascadeType.MERGE },
mappedBy = "stock")
public Set<StockDailyRecord> getStockDailyRecords() {
return this.stockDailyRecords;
}
с этим:
stockDailyRecords.setStock(stock);
stock.getStockDailyRecords().add(stockDailyRecords);
session.save(stock);
session.getTransaction().commit();
не будет работать, так как @OneToMany
от JPA, ожидается каскад JPA - javax.persistence.CascadeType
. Однако при сохранении в сеансе Hibernate org.hibernate.engine.Cascade
выполнит следующую проверку:
if ( style.doCascade( action ) ) {
и процесс сохранения Hibernate будет вызывать действие ACTION_SAVE_UPDATE
, но JPA пропустит ACTION_PERSIST
и ACTION_MERGE
, не совпадет и приведет к сбою каскада.