我有一个名为bmu_mstr的主表,对应的实体类是
@Entity
@Table(name = "bmu_mstr")
@JsonIgnoreType
//@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property="@bmuId")
public class BmuMaster implements Serializable{
private static final long serialVersionUID = -8284996311089344328L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "bmu_id", unique = true, nullable = false)
private Integer bmuId;
@Column(name = "bmu_desc")
private String bmuDesc;
public BmuMaster() {
}
public BmuMaster(Integer bmuId) {
this.bmuId = bmuId;
和其他表是comp_rsc_move_employee,它具有tranfer_from和transfer_to列。基本上是bmu主表的bmu_id。相应的类是
@Entity
@Table(name = "comp_rsc_move_employee")
public class CompRscEmployee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer rscId;
@ManyToOne
@JoinColumn(name = "transfer_from")
private BmuMaster transferFrom;
@ManyToOne
@JoinColumn(name = "transfer_to")
private BmuMaster transferTo;
现在我要更新comp_rsc_move_employee表中的数据
CompRscEmployee compRscEmployee = new CompRscEmployee();
compRscEmployee.setTransferFrom(new BmuMaster(employeeDetails.getTransferFrom()));
compRscEmployee.setTransferTo(new BmuMaster(employeeDetails.getTransferTo()));
CompRscEmployee rscEmp = compDao.saveOrUpdate(compRscEmployee)
.orElseThrow(() -> new CommonException("Unable to save or update CompRscEmployee data"));
但是现在我想保存CompRscEmployee时,hibernate会告诉'对象引用了一个未保存的临时实例-在刷新之前保存该临时实例'
我搜索了所有stackoverflow线程,但没有提出我的方案。我的BmuMaster是MASTER表,插入CompRscEmployee表时,我不想在该表中保存数据。显然,我可以更改实体类CompRscEmployee,并且可以将数据类型从BmuMaster更改为Integer。但我不想这样做。任何想法如何实现这一目标?这似乎是一个非常基本的问题。但是我无法做到这一点,因为我刚冬眠。.
BmuMaster from = masterDao.findById(employeeDetails.getTransferFrom())
.orElseThrow(() -> new CommonException("Unable to find department" + employeeDetails.getTransferFrom()));
BmuMaster to = masterDao.findById(employeeDetails.getTransferTo())
.orElseThrow(() -> new CommonException("Unable to find department" + employeeDetails.getTransferTo()));
CompRscEmployee compRscEmployee = new CompRscEmployee();
compRscEmployee.setTransferFrom(from);
compRscEmployee.setTransferTo(to);
CompRscEmployee rscEmp = compDao.saveOrUpdate(compRscEmployee)
.orElseThrow(() -> new CommonException("Unable to save or update CompRscEmployee data"));