[英]Two Representations of the Same Object - Hibernate Issue
我有一條select語句,它以與File一對多的關系加載到Folders類中。 盡管有時會發生錯誤,但有時會給我一個Hibernate錯誤,說我對會話的使用是不安全的,或者同一集合Folders.file有兩種表示形式。 我究竟做錯了什么? 謝謝你的幫助!
Folders.java
@Entity
@Table(name= "folders")
public class Folders implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "folder_code")
private Integer folderCode;
@Column(name = "assign_code")
private Integer assignCode;
public Set<File> getFile() {
return file;
}
public void setFile(Set<file> assignments) {
this.file = file;
}
@OneToMany(targetEntity=File.class,cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name="assign_code",referencedColumnName="assign_code")
Set<Folder> folder;
public Integer getAssignCode() {
return assignCode;
}
public void setAssignCode(Integer assignCode) {
this.assignCode = assignCode;
}
public Integer getFolderCode() {
return folderCode;
}
public void setFolderCode(Integer folderCode) {
this.folderCode = folderCode;
}
public Date retrieveFileStartDate(){
List<File> file;
if(this.getFile()!=null){
file= new ArrayList<File>(this.getFile());
}else{
file = new ArrayList<File>();
}
return file.size()>0 ? new
Date(file.get(0).getStartDate()): null;
}
}
File.java
@Entity
@Table(name= "file")
public class File implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "assign_code")
private Integer assignCode;
@Column(name = "start_date")
private String startDate;
@Column(name = "end_date")
private String endDate;
public Integer getAssignCode() {
return assignCode;
}
public void setAssignCode(Integer assignCode) {
this.assignCode = assignCode;
}
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
我不確定您遇到的錯誤,但查看您的實體,我可以說關系映射不正確。
您在Folder實體中映射@OneToMany,但在File實體中映射@ManyToOne呢?
還定義mappingBy屬性以使其正常工作。
Folder.java
@OneToMany(targetEntity=File.class,cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="file")
@JoinColumn(name="assign_code",referencedColumnName="assign_code")
private Set<Folder> folder;
File.java
@ManyToOne
private File file;
//getter and setter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.