0

2 つのエンティティ クラス:

   @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 mメソッド:

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();

今、私は休止状態がオブジェクトをマッピングして返すときを理解していません。キャストできないというアクションでこのエラーが発生しています:

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());
                }
4

3 に答える 3

3

クエリは のリストを返しませんが、オブジェクトの型がおよびFilesInfoである 2 要素オブジェクト配列のリストを返します。FilesInfoFilesShare

のみを返すようにクエリを書き直すか、関心のある部分を引き出すか、本当に必要な情報を取得するために使用できるオブジェクトを構築する をFilesInfo添付します。ResultTransformer

于 2013-04-27T20:29:17.947 に答える
0

クエリによって 2 つ from FilesInfo a, FilesShare b の異なるオブジェクトが生成される可能性があるため、それが FileShare オブジェクトである場合、FilesInfo にキャストすることはできません。

からhqlを参照してください

于 2013-04-27T20:28:04.830 に答える
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());
                }
于 2013-04-27T22:25:57.587 に答える