首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate删除多到多个惰性集合

Hibernate删除多到多个惰性集合
EN

Stack Overflow用户
提问于 2016-05-10 09:40:46
回答 2查看 692关注 0票数 0

我的实体类是:

代码语言:javascript
复制
@Entity
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(unique = true, nullable = false)
    private Long id;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dt_creation", nullable = false)
    private Date dtCreation;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dt_maj", nullable = false)
    private Date dtMaj;

    // bi-directional many-to-one 
    @OneToMany(mappedBy = "quality", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<RQulityUser> RQualityUser;


@Entity
public class RQualityUser implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dt_creation", nullable = false)
    private Date dtCreation;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "dt_maj", nullable = false)
    private Date dtMaj;

    // bi-directional many-to-one association to Questionnaire
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "fk_user", updatable = false, nullable = false)
    private User user;

    // bi-directional many-to-one association to QualitePersonne
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "cd_quality_user", updatable = false, nullable = false)
    private Quality quality;

当我得到一个用户,并且我试图清除RQualityUser列表时,我不工作:

代码语言:javascript
复制
 User user = em.getByid(11);
 user.getRQualityUserList().clear();

Hibernate不删除关系表中的记录吗?

EN

回答 2

Stack Overflow用户

发布于 2016-05-10 10:04:23

“延迟加载”意味着,只有当您第一次实际访问实体时,才会加载实体。

当你做的时候

代码语言:javascript
复制
user.getRQualityUserList() // Still contains nothing.

因此,您正在清除空列表,然后当您使用该列表时,将从DB调用数据。

票数 0
EN

Stack Overflow用户

发布于 2016-05-12 08:25:46

如果你这么做

代码语言:javascript
复制
User user = em.getByid(11);
user.getRQualityUserList().clear();

对于打开的持久上下文和事务内部,Hibernate应该删除记录。

如果你没有交易,你应该使用它。

如果使用封闭的持久上下文执行clear(),则应更新user以删除记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37134692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档