У меня есть Entity Class, который имеет отношение ManyToMany с другим классом. Я хочу создать новую запись в таблице этого экземпляра, просто изменив его свойство name.
Employee.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;
}
}
Address.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