【发布时间】:2014-05-29 17:34:37
【问题描述】:
我在我的项目中使用 Hibernate、Spring 和 Dozer。
我的问题是我无法加载延迟获取集合(列表)。 我正在使用 Dozer 将实体类转换为(Dto)类。 我认为推土机用户知道这些事情。
当我调试时,我从实体类中的 DB 获取所有数据,但是当我通过 Dozer 转换为 Dto 时,我在 Collection 中得到 null,这是 Lazy Fetched。
请帮帮我。提前致谢!
当我将实体转换为 Dto 时,我无法获取开发者列表。我有确切的 Dto 类名称 Developer 和 Founder 并将它们映射到字符串配置文件中。我尝试了@Select 在连接表上,然后它加载并工作正常,但我不希望那样。如果我必须在我的 servicemanager 类中添加额外的功能,请帮助我。
@Entity
@Table(name = "table")
public class Founder {
@Id
@Column(name = "foun_id")
@GeneratedValue(generator = "uuid")
private String id;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "reg_address_id")
private Address registeredAddress;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "jointable", joinColumns = { @JoinColumn(name = "foun_id", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "dev_id", nullable = true) })
private List<Developer> developer;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Address getRegisteredAddress() {
return registeredAddress;
}
public void setRegisteredAddress(Address registeredAddress) {
this.registeredAddress = registeredAddress;
}
public List<Developer> getDeveloper() {
return developer;
}
public void setDeveloper(List<Developer> developer) {
this.developer = developer;
}
}
@Entity
@Table(name = "tbl")
public class Developer {
@Id
@Column(name = "dev_id")
@GeneratedValue(generator = "uuid")
private String id;
@Column(name = "file_number")
private String fileNumber;
@Column(name = "flat_info")
private String flatInfo;
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "address_id")
private Address address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFileNumber() {
return fileNumber;
}
public void setFileNumber(String fileNumber) {
this.fileNumber = fileNumber;
}
public String getFlatInfo() {
return flatInfo;
}
public void setFlatInfo(String flatInfo) {
this.flatInfo = flatInfo;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
【问题讨论】:
-
你能显示实体类和ORM映射吗?我怀疑映射的是字段,而不是 getter,这就是为什么不调用休眠生成的代理 getXXX 方法的原因。
-
我检查了我的整个代码,没有任何遗漏,也没有语法错误。
标签: java hibernate lazy-loading dozer lazy-initialization