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”。它应该与子实体中的变量名匹配