Hibernate正在做一些我似乎无法解释的事情。 我有两个实体,其中YearlyBreakDown的关系为ManyBreakdown,而单个MonthlyBreakdown只有一个YearlyBreakDown。
我看到了什么?
当我在YearlyBreakDown上使用hibernate保存时。 Hibernate似乎更新了MonthlyBreakdown(请参阅下面的Hibernate日志)。
我所知道的。
Hibernate能够级联更新,删除等。对于子实体,但仅在明确定义了关系时,查看注释文档,它明确指出默认情况是不对其子级进行级联操作。
我想要发生什么
我希望能够在我的Java实体上调用hibernate保存,而无需将操作级联到MontlyBreakdown孩子。
我对hibernate没有足够的了解,知道我是否设置错误,我想知道是否有人可以解释发生了什么或指出我做错了什么
YearlyBreakDown.class
@Entity
@Table(name = "YRLY_BRKDN", schema = "pricing")
@SequenceGenerator(sequenceName = "SEQ_YRLY_BRKDN_ID", name = "SEQ_YRLY_BRKDN_ID", schema = "pricing", allocationSize = 1)
public class YearlyBreakdown {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_YRLY_BRKDN_ID")
@Column(name = "YRLY_BRKDN_ID")
@Access(AccessType.PROPERTY)
private Integer id;
@OneToMany(mappedBy = "yearlyBreakdown")
private List<MonthBreakdown> monthBreakdowns = new ArrayList<>();
}
MontlyBreakdown.class
@Entity
@Table(name = "MTH_BRKDN", schema = "pricing")
public class MonthBreakdown implements Processable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "MTH_BRKDN_ID")
@Access(AccessType.PROPERTY)
private Integer id;
@ManyToOne
@JoinColumn(name = "YRLY_BRKDN_ID")
private ServiceOfferingBreakdown serviceOfferingBreakdown;
@Column(name = "MTH_CT")
private Integer month;
@Column(name = "DRCT_CST_AM")
private BigDecimal directCost;
@Column(name = "RISK_CST_AM")
private BigDecimal riskCost;
@Column(name = "INFLTN_CST_AM")
private BigDecimal inflationCost;
@Column(name = "NET_REV_AM")
private BigDecimal netRevenue;
@Column(name = "GRS_MRGN_AM")
private BigDecimal grossMargin;
@Column(name = "OPER_PRFT_AM")
private BigDecimal operatingProfit;
@Transient
private boolean processed;
}
休眠日志
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: select monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_0_, monthbreak0_.MTH_BRKDN_ID as MTH_BRKD1_1_1_, monthbreak0_.DRCT_CST_AM as DRCT_CST2_1_1_, monthbreak0_.GRS_MRGN_AM as GRS_MRGN3_1_1_, monthbreak0_.INFLTN_CST_AM as INFLTN_C4_1_1_, monthbreak0_.MTH_CT as MTH_CT5_1_1_, monthbreak0_.NET_REV_AM as NET_REV_6_1_1_, monthbreak0_.OPER_PRFT_AM as OPER_PRF7_1_1_, monthbreak0_.RISK_CST_AM as RISK_CST8_1_1_, monthbreak0_.YRLY_BRKDN_ID as SRVC_OFR9_1_1_ from pricing.MTH_BRKDN monthbreak0_ where monthbreak0_.YRLY_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?
Hibernate: update pricing.MTH_BRKDN set DRCT_CST_AM=?, GRS_MRGN_AM=?, INFLTN_CST_AM=?, MTH_CT=?, NET_REV_AM=?, OPER_PRFT_AM=?, RISK_CST_AM=? where MTH_BRKDN_ID=?