Java 瞬态域实例jpa&;春天
我的域对象大致如下:Java 瞬态域实例jpa&;春天,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,我的域对象大致如下: @Entity public class Customer{ @Id private String id; private String name; @OneToMany(cascade=CascadeType.ALL) private List<Account> accountList; } @Entity public class Account{ @Id private String id;
@Entity
public class Customer{
@Id
private String id;
private String name;
@OneToMany(cascade=CascadeType.ALL)
private List<Account> accountList;
}
@Entity
public class Account{
@Id
private String id;
private String name;
@OneToMany
private List<Service> serviceList;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(nullable=false)
private Customer customer;
}
@Entity
public class Service{
@Id
private String id;
private String name;
@ManyToOne
@JoinColumn(nullable=false)
private Account account;
}
@实体
公共类客户{
@身份证
私有字符串id;
私有字符串名称;
@OneToMany(级联=级联类型.ALL)
私人名单;
}
@实体
公共类帐户{
@身份证
私有字符串id;
私有字符串名称;
@独身癖
私有列表服务列表;
@多通(级联=级联类型.ALL)
@JoinColumn(nullable=false)
私人客户;
}
@实体
公务舱服务{
@身份证
私有字符串id;
私有字符串名称;
@许多酮
@JoinColumn(nullable=false)
私人帐户;
}
我有一个事务性的Spring服务。我想将帐户实例返回到fronthand,但由于bandwith问题,我不想发送客户和服务列表信息
当我这样做时:
account.setServiceList(空);
它没有给出错误,但过了一段时间,它删除了我的所有服务列表
当我这样做时:
account.setCustomer(空);
它表示帐户的客户id不能为空
我只想返回一个没有验证的瞬态实例。我该怎么办
entityManager.detach(accountInstance)
(或者entityManager.clear()
(如果您使用JPA 1.0分离所有实体),并仅对其进行任何更改,使实体分离。如果使用Hibernate的会话,请使用该方法mapped
属性的一侧缺少双向关系。例如,在Customer
中,您应该有
@OneToMany(cascade=CascadeType.ALL, mappedBy="customer")
private List<Account> accountList;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“customer”)
私人名单;
其他关系也一样。首先感谢您的快速回答。关于mappedBy,我有,但我忘了在这里写。关于分离,这似乎是我需要的,但问题是我没有使用entityManager,而是使用sessionFactory。org.hibernate.sessionfactory也有类似的功能吗?是的,当然可以:我更新了一点我的答案以反映这一点。目前我无法测试,因为我们的服务器已关闭:(但请确保我接受这一功能)。