java - hibernate返回列表转换问题

标签 java hibernate struts2

两个实体类:

   @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 方法:

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; cannot be cast to app.domain.FilesInfo

Action

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

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

最佳答案

您的查询不会返回 FilesInfo 列表,而是返回一个二元素对象数组列表,其中对象的类型为 FilesInfoFilesShare.

您可以重写查询,使其仅返回 FilesInfo,或者附加 ResultTransformer它会提取您感兴趣的部分或构造一个可用于获取您真正想要的信息的对象。

关于java - hibernate返回列表转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256499/

相关文章:

java - Spring MVC 阻塞队列与初始化巨大的库

java - 如何删除表中的值? (MVN、Spring、Java)

java - 使用 hibernate 获取具有实体属性值的物理列值

java - spring boot/hibernate查询结果花费太多时间

properties - 在 Struts 2 中放置属性文件的位置?

java - 在struts 2中的请求url路径中传递电子邮件时出错

java - 为什么在 InitialContext 上调用 close() 会中断所有 future 查找的 JNDI (Glassfish)?

java - 如何在hibernate中查询map元素?

java - Struts ajax 404错误

Java:无法在 JUnit 测试中读取数据文件