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".它应该与子实体中的变量名称相匹配。
只需要大家的快速帮助。我使用 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".它应该与子实体中的变量名称相匹配。