【问题标题】:Persisting data on Sap Hana using hibernate使用休眠在 Sap Hana 上持久化数据
【发布时间】:2020-05-19 07:42:21
【问题描述】:

我想了解我在 sap hana 上遇到的一种行为。

我有A类

package org.cl;

@Entity
@Table(name = "CLASS_A")
@Getter
@Setter
@EqualsAndHashCode
public class ClassA implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "CLASS_A_ID")
    private String id;

    @OneToMany(mappedBy = "classA", cascade = CascadeType.ALL)
    private List<ClassB> classesB = new ArrayList<>();

}

和B类

package org.cl;

@Entity
@Table(name = "CLASS_B")
@Setter
@Getter
public class ClassB {

    @Id
    @GeneratedValue
    @Column(name = "CLASS_B_ID")
    private Long id;

    @Column(name = "CLASS_A_ID", nullable=false, updatable = false, insertable = false)
    private String classAId;

    @ManyToOne
    @JoinColumn(name = "CLASS_A_ID", referencedColumnName = "CLASS_A_ID")
    private ClassA classA;
}

如果我应用这段代码

List<ClassB> classBInstances = populateList(classAInstance);
classAInstance.setSlaves(classBInstances);
entityManager.merge(user);
  1. 如果 classBInstances 仅填充了新实例,则一切正常
  2. 如果 classBInstances 填充了新旧元素的混合,并且一些元素已被删除,则在 db 中我会找到所有原始元素以及新元素
  3. 如果所有原始元素都已被删除并替换为完全不同的新实例,我再次在数据库中找到原始元素和新元素

为了让事情正常工作,我必须从列表和数据库中显式删除不需要的元素,然后为每个新的 classB 实例应用持久化。

我该如何解决这种情况?

我想只使用列表进行操作,如果一个元素没有出现在列表中必须删除,如果出现必须我坚持。

我的系统

  • querydsl-jpa: 4.2.1
  • querydsl 核心:4.2.1
  • 休眠核心:5.3.7
  • sap hana db 版本:1.00.122.06.1485334242
  • java 运行时:8

提前感谢您的支持

【问题讨论】:

  • 我认为这只是根据 JPA 规范为集合级联合并更新定义的行为。可能您想为您的OneToMany 关联设置orphanRemoval = true。另请阅读:vladmihalcea.com/merge-entity-collections-jpa-hibernate
  • 非常感谢,这是正确答案!
  • @Jan-WillemGmeligMeyling:您能否将该评论作为答案,以便其他用户也可以接受它。

标签: java hibernate jpa querydsl hana


【解决方案1】:

这只是根据 JPA 规范为集合级联合并更新定义的行为。可能您想为您的@OneToMany 关联设置orphanRemoval = true

另请阅读:vladmihalcea.com/merge-entity-collections-jpa-hibernate

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多