JPA CasCade问题

时间:2015-12-23 03:23:09

标签: java hibernate jpa-2.0 hibernate-mapping

假设遵循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实体。 我该怎么做?

我正在使用,

  • hibernate 4.3.7.Final
  • Java 1.8.66
  • J2ee 7
  • EJB 3
  • Wildfly 8.2 Final

ps:一个类的存储库的save方法由一个无状态(EJB)管理器类调用。

0 个答案:

没有答案