hibernate - 无法复制多对多关系中的实体
问题描述
我有一个实体类,它与另一个类具有多对多关系。我想通过更改其名称属性在此实例的表中创建一个新条目。
员工.java`
@Entity
@Table(name = "employee")
public class Employee {
public Employee() {
super();
}
public Employee(String name, List<Address> address) {
super();
this.name = name;
this.setAddress(address);
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.REMOVE,CascadeType.DETACH },fetch=FetchType.EAGER)
@JoinTable(name = "employee_address", joinColumns = { @JoinColumn(name = "employee_id") }, inverseJoinColumns = {
@JoinColumn(name = "address_id") })
private List<Address> address;
@OneToOne
private Department department;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<Address> getAddress() {
return address;
}
public void setAddress(List<Address> address) {
this.address = address;
}
public Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
}
地址.java
@Entity
@Table(name = "Address")
public class Address {
public Address() {
super();
}
public Address(String address) {
super();
this.address = address;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String address;
@ManyToMany(mappedBy = "address", cascade = CascadeType.REMOVE)
private List<Employee> employee;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
DataRetrivalServiceImpl.java
@Service
public class DataServiceImpl {
@Autowired
private EntityManager entityManager;
@Transactional
public void copyEmpoyee() {
Employee e = employeeRepo.findOneById(15);
entityManager.detach(e);
e.setId(0);
e.setName("new Name");
//employeeRepo.save(e);
entityManager.persist(e);
}
当我运行代码时,会在员工表中创建一个新条目,而不是在地址表中。谁能解释我在哪里做错了!
整个代码可以在 - https://github.com/iftekharkhan09/JPAHibernateProject找到
解决方案
推荐阅读
- jasypt - 来自 PCF 的多个 Jasypt 密码配置
- c - 计算两个数字的总和并通过使用 C 中的 void 函数以指针作为参数“返回”它
- python - 如何将 python 文件链接到另一个文件?
- tensorflow - 无法使用 Tensorflow Faster R-CNN Inception ResNet V2 检测图像中的所有对象
- ios - UITableview拖放重新排序单元格在滚动时消失
- javascript - rxjs 中的 .toPromise() 和 lastValueFrom()
- php - 从 PHP 中的多个数组创建多维数组
- android - 颤振错误:参数类型“对象?” 不能分配给参数类型“int”。或“字符串”
- php - 如何防止用户检查不存在的 url,如何在 Laravel 8 中隐藏路由。*
- powershell - 删除目录中每个子文件夹中的前 5 个项目