Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 Hibernate mappedBy提供com.sun.jdi.InvocationException调用方法时发生异常_Java_Hibernate_Lazy Initialization - Fatal编程技术网

Java Hibernate mappedBy提供com.sun.jdi.InvocationException调用方法时发生异常

Java Hibernate mappedBy提供com.sun.jdi.InvocationException调用方法时发生异常,java,hibernate,lazy-initialization,Java,Hibernate,Lazy Initialization,只是需要你们大家的快速帮助。我使用了mappedBy而不是@JoinColumn来优化性能: @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user") 有人建议我设置fetch=FetchType.EAGER。 但我不想那样做。是否有其他方法可以获取延迟加载的集合对象。 或者我应该使用@JoinColumn来实现这一点? 而mappedBy对于其他人来说是多么有用,如果他们不能懒洋洋地阅读它的话 样本实体

只是需要你们大家的快速帮助。我使用了
mappedBy
而不是
@JoinColumn
来优化性能:

@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user")
有人建议我设置
fetch=FetchType.EAGER
。 但我不想那样做。是否有其他方法可以获取延迟加载的集合对象。 或者我应该使用
@JoinColumn
来实现这一点? 而
mappedBy
对于其他人来说是多么有用,如果他们不能懒洋洋地阅读它的话

样本实体

@Entity
@Table(name="users,uniqueConstraints=@UniqueConstraint(columnNames= "username"))
public class Users implements java.io.Serializable {
   private Set<IDPMaster> idpMaster;
    public void setIdpMaster(Set<IDPMaster> idpMaster) {
        this.idpMaster = idpMaster;
    }
    @OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user")
    public Set<IDPUserManagerMapping> getIdpMapping() {
        return idpMapping;
    }
    //Getters and Setters 
    }


@Entity
@Table(name="IDP_Master",schema="eb")
public class IDPMaster implements Serializable {
    private Users idpUsers;
        @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="paticipant_id",nullable=false)
    public Users getIdpUsers() {
        return idpUsers;
    }
    public void setIdpUsers(Users idpUsers) {
        this.idpUsers = idpUsers;
    }
    }
@实体
@表(name=“users,uniqueConstraints=@UniqueConstraint(columnNames=“username”))
公共类用户实现java.io.Serializable{
专用设置idpMaster;
公共无效设置idpMaster(设置idpMaster){
this.idpMaster=idpMaster;
}
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy=“user”)
公共集getIdpMapping(){
返回IDP映射;
}
//接球手和接球手
}
@实体
@表(name=“IDP_Master”,schema=“eb”)
公共类IDPMaster实现可序列化{
私人用户;
@manytone(fetch=FetchType.LAZY)
@JoinColumn(name=“参与人”\u id”,可为空=假)
公共用户getIdpUsers(){
返回用户;
}
public void setIdpUsers(用户idpUsers){
this.idpUsers=idpUsers;
}
}

mappedBy只能在一个实体中使用,即父实体,而@JoinColumn可以在关系的两侧使用。请参阅以了解区别。您是否可以显示您创建的示例实体

另外,您不需要指定fetch=FetchType.LAZY,因为默认情况下,在Hibernate中FetchType始终是LAZY的。但是,在JPA中,对于不同的映射,fetch类型是不同的

编辑。。
映射中提供的字段名应为“idpUsers”,而不是“users”“。它应该与子实体中的变量名匹配。

mappedBy只能用于一个实体,即父实体,而@JoinColumn可以用于关系的两侧。看看有什么不同。能否显示已创建的示例实体

另外,您不需要指定fetch=FetchType.LAZY,因为默认情况下,FetchType在Hibernate中总是惰性的。然而,在JPA中,对于不同的映射,获取类型是不同的

编辑。。 地图中提供的字段名应为“idpUsers”,而不是“users”。它应该与子实体中的变量名匹配