![](/img/trans.png)
[英]Hibernate - Setting null in entity collection is automatically persisted at transaction commit
[英]Hibernate deletes collection elements on transaction commit
我不知道為什么冬眠試圖在事務提交后刪除集合元素。 我什至不要求它這樣做。
有任何想法嗎?
技術細節在下面發布。
休眠方言:
org.hibernate.dialect.SQLServerDialect
實體類:
@Entity
@Table(name = "View_m_activity", schema = "model")
public class SourceActivity {
private Set<SourceActivityAttrOut> outputAttributes;
private Long ID;
@Id
public Long getID() {
return ID;
}
public void setID(Long ID) {
this.ID = ID;
}
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "View_m_activity_attr_out", schema = "model", joinColumns = @JoinColumn(name = "activity_id"))
public Set<SourceActivityAttrOut> getOutputAttributes() {
return outputAttributes;
}
public void setOutputAttributes(Set<SourceActivityAttrOut> outputAttributes) {
this.outputAttributes = outputAttributes;
}
}
集合元素實體類:
@Embeddable
public class SourceActivityAttrOut {
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
執行代碼:
@Transactional
public void readSource(SourcePool sourcePool) {
sessionFactory.getCurrentSession().createQuery("from SourceActivity", SourceActivity.class).list();
}
日志信息:
Hibernate:
select
sourceacti0_.ID as ID1_0_
from
model.View_m_activity sourceacti0_
Hibernate:
select
outputattr0_.activity_id as activity1_1_0_,
outputattr0_.code as code2_1_0_
from
model.View_m_activity_attr_out outputattr0_
where
outputattr0_.activity_id=?
Hibernate:
select
outputattr0_.activity_id as activity1_1_0_,
outputattr0_.code as code2_1_0_
from
model.View_m_activity_attr_out outputattr0_
where
outputattr0_.activity_id=?
Hibernate:
select
outputattr0_.activity_id as activity1_1_0_,
outputattr0_.code as code2_1_0_
from
model.View_m_activity_attr_out outputattr0_
where
outputattr0_.activity_id=?
Hibernate:
select
outputattr0_.activity_id as activity1_1_0_,
outputattr0_.code as code2_1_0_
from
model.View_m_activity_attr_out outputattr0_
where
outputattr0_.activity_id=?
Hibernate:
delete
from
model.View_m_activity_attr_out
where
activity_id=?
問題原因在這里描述
很快,為了解決該問題,我不得不重寫哈希碼和SourceActivityAttrOut的等價物。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.