2013-04-27 79 views
0

兩個實體類:休眠返回列表投放問題

@Entity 
public class FilesInfo { 
    @Id 
    @GeneratedValue 
    private Integer id; 
    private String name; 
    private String url; 

    @OneToMany(cascade= CascadeType.ALL) 
    @JoinColumn(name="fileId") 
    private Collection<FilesShare> filesShared = new ArrayList<FilesShare>(); 

    public Collection<FilesShare> getFilesShared() { 
     return filesShared; 
    } 

    public void setFilesShared(Collection<FilesShare> filesShared) { 
     this.filesShared = filesShared; 
    } 

第二:

@Entity 
public class FilesShare { 
    @Id 
    @GeneratedValue 
    private Integer id; 
    @Column(name="fileId") 
    private Integer fileId; 
    private int userId; 
    private int owner; 
    @ManyToOne 
    @JoinColumn(name="fileId", updatable=false,insertable=false) 
    private FilesInfo filesInfo; 

    public FilesInfo getFilesInfo() { 
     return filesInfo; 
    } 

    public void setFilesInfo(FilesInfo filesInfo) { 
     this.filesInfo = filesInfo; 
    } 

的daoimpl mmethod:

public List<FilesInfo> reqSharedFiles(FilesShare fs) { 
     session=HibernateUtil.getSessionFactory().getCurrentSession(); 
     session.beginTransaction(); 
    List<FilesInfo> filesInfo = null; 
      filesInfo=(List<FilesInfo>)session.createQuery("from FilesInfo a, FilesShare b where a.id=b.fileId and b.userId=5 and b.owner=1").list(); 

現在我不明白,當Hibernate是映射和返回對象,我得到這個錯誤的行動,它不能被鑄造:

Ljava.lang.Object;不能轉換爲app.domain.FilesInfo

行動

private List<FilesInfo> furls= new ArrayList<FilesInfo>(); 
furls=upload.reqSharedFiles(fs); 

       for(FilesInfo s: furls) // ERROR IS SHOWING HERE 
       { 
        System.out.println(s.getUrl()); 
       } 

回答

0

謝謝全部。這是我搜索後做的。

private List<Object[]> turls=new ArrayList<Object[]>(); //get the list of Object[] from HQL 


for(Object[] r : turls) 
       { 
        FilesInfo inf =(FilesInfo)r[0]; 
        System.out.println(inf.getUrl()); 
       } 
0

可能導致兩個不同勢對象查詢,from FilesInfo a, FilesShare b所以如果它不能被轉換爲FilesInfo文件共享對象

看到hql from

+0

看到我在這些實體中有一對多和多對多的關係,而B表中的過濾器將從A表中得到最終結果。希望明白 – Aadam 2013-04-27 20:29:39

+0

看到在awnser中添加的鏈接,它會返回多個類。 – 2013-04-27 20:31:15

+0

這是理解,我可以看到對象的大小爲兩個,因爲它包含2個結果。我現在如何檢索?那對於不工作,類似的文件信息迭代器失敗 – Aadam 2013-04-27 20:32:53

3

您的查詢不返回FilesInfo列表,但兩個元素的列表對象數組的對象的類型爲FilesInfoFilesShare

您可以重寫您的查詢,以便它只返回FilesInfo,或附加ResultTransformer,抽出您感興趣的部分或構建可用於獲取您真正想要的信息的對象。

+0

這是理解,我可以看到對象的大小爲兩個,因爲它包含2個結果。我現在如何檢索?那對於不工作,類似於filesinfo的迭代器失敗 – Aadam 2013-04-27 20:33:29