列映射混淆

时间:2017-09-08 10:29:19

标签: java hibernate

表:NAME(varchar2),AGE(varchar2),ID_NO(varchar2)

B表:NAME(varchar2),ADDRESS(varchar2)

我得到了这样的实体

@Entity
public calss A {
    @Column(name="NAME")
    private String name;
    @Column(name="AGE")
    private String age;
    @Column(name="ID_NO")
    private String idNo;
    @Column(name="ADDRESS")
    private String address;
}

当我执行此代码时:

session.createsqlQuery("SELECT * FROM A ").addEntity(A.clss).uniqueResult();

我收到了SQLException意味着地址列不存在。而且我不想将@Transient放到Address列,因为我希望我可以使用此实体来使用B表,如下所示:

session.createsqlQuery("SELECT * FROM B ").addEntity(A.clss).uniqueResult();

如何才能成功获得这个结果?

1 个答案:

答案 0 :(得分:0)

一个简短的回答:你不能。

如果你想拥有这类东西,你应该创建类层次结构(最少没有@Inheritance以及我希望你自己google的其他东西):

@Entity
public calss A {
    @Column(name="NAME")
    private String name;
    @Column(name="AGE")
    private String age;
    @Column(name="ID_NO")
    private String idNo;
}

@Entity
public class B extends A {
    @Column(name="ADDRESS")
    private String address;
}

然而,它不会起作用,因为你应该指定@Id列。