java - Hibernate:如何从 "many"一侧删除 "one"一侧的一对多关系中的实体

标签 java hibernate orm foreign-keys relational-database


我注意到 Hibernate 不允许删除一对多关系中的实体。 我有两个表(和实体),公司和员工。
我想使用以下代码删除员工:

..
company.getEmployees().remove(myEmployee); //employees is a collection in Company, it is  mapped as a one-to-many relationship (@OneToMany)
sessionFactory.getCurrentSession().merge(company);

您知道如何强制删除吗?或者至少得到一个异常?

最佳答案

是的,默认情况下不删除。但是您可以将 @OneToMany 关系映射到 orphanRemoval = true attribute为了被自动删除:

@OneToMany(cascade=CascadeType.ALL, orphanRemoval=true) 
public Set<Employee> getEmployees() { return employees; }

关于java - Hibernate:如何从 "many"一侧删除 "one"一侧的一对多关系中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15900228/

相关文章:

java - 测试使用 JPA 实现的 DAO 类

java - 无法运行路径设置为 Java 6 的 Grails 2.1

java - 如何使用 Graphics2d.setPaint() 在 Java 中快速绘制大型数据集

java - Spring 3.2 Hibernate 没有 Activity 事务

java - hibernate 多用户,动态变化

PHP - ORM Lazy Load/Identity Map 实现问题

database - 初始化对象或直接从数据库读取/写入数据库效率更高吗?

java - 无法执行“ALTER TABLE”,因为表不存在

java - 如何使用 docker-java 创建并启动 Docker 容器节点,分离模式

java - 组织.hibernate.HibernateException : Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set