Java 如果我只有ID,如何在JPA2中持久化多对多集合?
以下是我的多对多收藏:Java 如果我只有ID,如何在JPA2中持久化多对多集合?,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,以下是我的多对多收藏: @ManyToMany @JoinTable(name="affiliated_databases", joinColumns= @JoinColumn(name="database_id", referencedColumnName="id"), inverseJoinColumns= @JoinColumn(name="affiliated_database_id", referencedColu
@ManyToMany
@JoinTable(name="affiliated_databases",
joinColumns=
@JoinColumn(name="database_id", referencedColumnName="id"),
inverseJoinColumns=
@JoinColumn(name="affiliated_database_id", referencedColumnName="id")
)
public Set<Database> affiliatedOrgs;
这是工作,但1)它在我看来并不优雅;
2) 如果此目标对象将来在某个地方使用,则可能会产生错误。。。或者这是一个很好的解决方案,我的怀疑是徒劳的
那么,有没有更优雅的方法来持久保存此集合,而无需从数据库中读取其所有对象,并且不会在将来引发错误。您可能需要使用。它创建一个实体“代理”对象,并延迟获取其所有属性(如果需要)
获取一个实例,该实例的状态可能是延迟获取的。如果请求的实例在数据库中不存在,则在第一次访问实例状态时抛出EntityNotFoundException。(在调用getReference时,允许持久性提供程序运行时抛出EntityNotFoundException。)应用程序不应期望实例状态在分离时可用,除非在实体管理器打开时应用程序访问了实例状态
for (Long affId: affIds) {
Database affDatabase = new Database();
affDatabase.setId(affId);
target.getAffiliatedOrgs.add(affDatabase);
}
dao.save(target);