Hibernate mappedBy 给出 com.sun.jdi.InvocationException 调用方法

Hibernate mappedBy gives com.sun.jdi.InvocationException occurred invoking method

只需要大家的快速帮助。我使用 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;
    }
    }

mappedBy 只能在一个实体中使用,即父实体,而 @JoinColumn 可以在关系的两侧使用。请参阅 JPA JoinColumn vs mappedBy 了解差异。你能展示你创建的示例实体吗?

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

已编辑.. mappedBy 中提供的字段名称应该是 "idpUsers" 而不是 "users".它应该与子实体中的变量名称相匹配。