簡體   English   中英

同一對象的兩種表示形式-休眠問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM