gpt4 book ai didi

java - Hibernate 在事务提交时删除集合元素

转载 作者:行者123 更新时间:2023-12-01 09:12:52 25 4
gpt4 key购买 nike

我不明白为什么 hibernate 在事务提交后尝试删除集合元素。我什至没有要求它这样做。

有什么想法吗?

下面发布了技术细节。

hibernate 方言:

    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=?

最佳答案

问题原因描述here

简单来说,为了解决这个问题,我必须重写 SourceActivityAttrOut 的 hashcode 和 equals。

关于java - Hibernate 在事务提交时删除集合元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40804618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com