Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我只有ID,如何在JPA2中持久化多对多集合?_Java_Hibernate_Jpa 2.0 - Fatal编程技术网

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);