假设遵循A类,
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.joda.time.DateTime;
@Entity
@Table(name = "table_a")
@AttributeOverride(name = "id", column = @Column(name = "a_id"))
public class A {
@ManyToOne(fetch = javax.persistence.FetchType.LAZY)
@JoinColumn(name = "user_id", referencedColumnName = "user_id")
private User user;
@Column(name = "date")
private DateTime date;
@Column(name = "name")
private String name;
@Column(name = "number")
private Integer number;
}
通用保存方法:
public T save(T entity) throws PersistenceException {
this.getEntityManager().joinTransaction();
if (entity.getId() == null) {
this.getEntityManager().persist(entity);
} else {
entity = this.getEntityManager().merge(entity);
}
return entity;
}
在上面的类中,User是一个单独的实体,在DB(user_table)中有自己的表。含义用户实体可以单独保存,无需使用A类。 我的问题是当我持久化A类时,它会将User对象的更改持久化/合并到user_table中。此关系中的用户实体只是一个引用属性,我不想在保存A类时保存/合并User实体。 我该怎么做?
我正在使用,
ps:一个类的存储库的save方法由一个无状态(EJB)管理器类调用。