首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Hibernate获取视图映射的抽象超类返回无效的列名

问使用Hibernate获取视图映射的抽象超类返回无效的列名
EN

Stack Overflow用户
提问于 2014-07-01 08:45:11
回答 1查看 169关注 0票数 2

情况如下。说我有个孩子,我想找他的父母。抽象父级位于视图中。父母可以是母亲,也可以是父亲。母亲也被定义在一个视图中。

代码语言:javascript
复制
@Entity
public class Kid extends DomainObject {
    private IParent theParent;

    @ManyToOne(fetch = FetchType.LAZY, targetEntity = Parent.class)
    @JoinColumn(name = "TheParentId")
    public IParent getTheParent() {
        return theParent;
    }

    @Override
    public void setTheParent(IParent theParent) {
        this.theParent = theParent;
    }
}

@Entity
@Inheritance(strategy= InheritanceType.JOINED)
@Table(name = "Parent")
public abstract class Parent {

}

@Entity
public class Mother extends Parent {

}

因此,使用Hibernate,我试图通过在Kid上调用getTheParent()来检索母对象:

代码语言:javascript
复制
from Kid hobj left join  fetch  hobj.theParent pa

这在数据库中运行得很好。但是,当通过Hibernate运行时,它返回SQL异常:无效列名(未知)

有几个指点可能是原因。在旧的数据库中,母亲和父亲是表而不是视图。我猜Hibernate理解这个链接是因为外键。将父表从“表”更改为“查看”会破坏应用程序。但是搜索发现Hibernate对待View和Table(在某种程度上)是平等的。为什么直接输入Hibernate而不是使用Hibernate时得到Hibernate所使用的确切查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 09:31:21

问题似乎在查询的select子句中。当向select列添加多个对象时(使用更多表运行得更深,然后是Kid、母亲和父亲),Hibernate会感到困惑。当我只使用Kid对象时(并使用Kid.getX().getY().getZ()填充项.),Hibernate获取所有东西都没有问题。

似乎是Hibernate中的一个bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24505982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档