Jakarta ee Eclipselink多对多关系,在联接表中没有结果
我在JavaEE项目中使用了两个实体类:Employee和Shift,它们之间存在多对多关系。看起来是这样的:Jakarta ee Eclipselink多对多关系,在联接表中没有结果,jakarta-ee,jpa,many-to-many,eclipselink,Jakarta Ee,Jpa,Many To Many,Eclipselink,我在JavaEE项目中使用了两个实体类:Employee和Shift,它们之间存在多对多关系。看起来是这样的: @Entity public class Employee implements Serializable { @ManyToMany(mappedBy="employees") private List shifts; private static final long serialVersionUID = 1L; @Id
@Entity
public class Employee implements Serializable {
@ManyToMany(mappedBy="employees")
private List shifts;
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String surname;
private String firstname;
我有一个JSF页面,我想在其中向所选班次添加员工(一个接一个),因此在我的支持bean中有以下方法:
public void addToShift(Employee e){
selectedShift.addEmployee(e);
e.addShift(selectedShift);
}
调用该方法后,我在联接表中看不到任何内容。我尝试了一些方法,比如使用entitymanager.find再次查找实体,但没有任何帮助,我在联接表中看不到任何内容,也看不出原因。管理员工和轮班没有问题,只是“只是”联系。。。你有什么想法吗?仅仅为分离的实体设置值是不够的。您仍然需要调用内部事务。在提交事务(或刷新entitymanager)之后,您也将在数据库中看到结果
当持久性上下文仍处于打开状态时(在您的情况下不是这样),仅刷新就足够了,不需要合并。仅将值设置为分离的实体是不够的。您仍然需要调用内部事务。在提交事务(或刷新entitymanager)之后,您也将在数据库中看到结果 当持久性上下文仍然处于打开状态时(在您的情况下不是这样),仅刷新就足够了,不需要合并
public void addToShift(Employee e){
selectedShift.addEmployee(e);
e.addShift(selectedShift);
}