加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用JPA和Hibernate实现:entityManager.remove – 不工作

发布时间:2020-12-14 06:08:46 所属栏目:Java 来源:网络整理
导读:我使用JPA而不是Hibernate 4.1.4.Final实现.我的问题是我无法让EntityManager #remove()工作.所有其他:更新,插入,选择操作正常工作,除了这一个. 我的persistence.xml文件: 我的答案实体:( BaseEntity类只保存主键 ID) @Entity@Table(name = "ANSWER")@Inhe

我使用JPA而不是Hibernate 4.1.4.Final实现.我的问题是我无法让EntityManager #remove()工作.所有其他:更新,插入,选择操作正常工作,除了这一个.

我的persistence.xml文件:

我的答案实体:( BaseEntity类只保存主键 – ID)

@Entity
@Table(name = "ANSWER")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Answer extends BaseEntity {

    @Column(name = "ANSWER_VALUE")
    private String answerValue;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "QUESTION_ID",nullable = false)
    private Question question;                

    //overrided equals,hascode,toString 
    // all getters and setters
}

致电时:

public void remove(T entity) {
    this.entityManager.remove(this.entityManager.merge(entity));
}

还尝试过:

this.entityManager.remove(entity);

和:

T ref = entityManager.getReference(entityClass,primaryKey);
entityManager.remove(ref);

没有运气:(它没有删除数据库中的答案记录.

我使用Spring配置来配置实体管理器,如下所示:

在使用@Transactional注释注释的方法中调用remove.所以它不应该是交易问题.

我启用了Hibernate SQL日志记录,所有其他日志记录.我没有看到任何删除查询将被执行或任何错误.

我真的没有选择.请指教.

编辑

也许这也会有所帮助:

我从另一个实体获得答案列表.答案定义如下:

@OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL,mappedBy = "evaluationPart")
private List

像这样调用删除:

List
最佳答案
我可能不在话题中,但这些可能是问题的问题

第一个原因 –
????此条目中未定义cascadeType

 @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "QUESTION_ID",nullable = false)
    private Question question;  

第二个原因(更多建议)

由于Answer的链接列表映射到Question对象,因此不建议直接从列表中删除单个对象作为一种良好做法.最好从链表中删除元素,然后更新/合并将在Answer表上自动执行删除操作的问题对象.

希望这可以帮助 :)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读