【发布时间】:2019-10-31 10:12:16
【问题描述】:
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 个选择语句没有删除:
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 是如何工作的?我迷茫了好几天。
提前感谢您的回答。
【问题讨论】:
标签: java mysql spring-data-jpa