java - 如何删除 spring-data-jpa 中多边的项目?

标签 java mysql spring-data-jpa

Department和Employee之间是双向的一对多关系。

@Setter
@Getter
@Entity
@Table(name = "t_department")
public class Department {
    @Id
    private String id;

    private String name;

    @OneToMany(mappedBy = "department",fetch = FetchType.EAGER,cascade = CascadeType.ALL)
    private List<Employee> employees;
}


@Setter
@Getter
@Entity
@Table(name = "t_employee")
public class Employee {
    @Id
    private String id;

    private String name;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "dept_id")
    private Department department;
}

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, String> {

}

在数据库中,我有那些记录。

t_department:
+----+------------+
| id | name       |
+----+------------+
| 2  | accounting |
| 3  | logistics  |
+----+------------+

t_employee:
+----+------+---------+
| id | name | dept_id |
+----+------+---------+
| 3  | Tom  | 2       |
| 4  | Tina | 3       |
+----+------+---------+

当我试图删除一个 Employee(id="3") 时,

    @Test
    @Transactional
    public void should_delete_employee_success_when_delete_employee_given_a_exist_employee_id_in_DB() {
        employeeRepository.delete("3");
    }

但在控制台中,它只打印了 2 条 select 语句而没有删除:

Hibernate: select employee0_.id as id1_2_0_, employee0_.dept_id as dept_id3_2_0_, employee0_.name as name2_2_0_, department1_.id as id1_1_1_, department1_.name as name2_1_1_ from t_employee employee0_ left outer join t_department department1_ on employee0_.dept_id=department1_.id where employee0_.id=?
Hibernate: select employees0_.dept_id as dept_id3_2_0_, employees0_.id as id1_2_0_, employees0_.id as id1_2_1_, employees0_.dept_id as dept_id3_2_1_, employees0_.name as name2_2_1_ from t_employee employees0_ where employees0_.dept_id=?

然后我去看了数据库,什么都没做。

spring-data-jpa 是如何工作的?我困惑了好几天。

提前感谢您的回答。

最佳答案

CrudRepository有方法 delete(<entity>)deleteById() .您应该使用 deleteById 而不是实体。

关于java - 如何删除 spring-data-jpa 中多边的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58641013/

相关文章:

mysql - T-SQL,比较记录属性,然后进行后续日期比较

python - Django 数据库优化?这是缓慢的还是正常的?

java - 具有分页、排序和规范的 JPA

java - 如何将从 MongoDB 查询获得的年份和星期转换为 Joda 日期时间?

java - JSP 中的 URL 总是转到本地主机并给出 HTTP 状态 404

java - 如何检查mysql中的blob列是否为null或为空

java - JSR 303 Bean Validation 可以与 Spring Data Rest 一起使用吗?

java - Spring : can't persist entity annotated with @JsonIgnore

java - Hadoop "Unable to load native-hadoop library for your platform"警告

java - canvas.drawRect 不在图像上绘制矩形