Java hibernate关系标注的投影

Java hibernate关系标注的投影,java,hibernate,jpa,orm,hibernate-mapping,Java,Hibernate,Jpa,Orm,Hibernate Mapping,我有两个表,如下所示: tableA { private String code; private String desc; //few other properties followed by getter and setter } tableB { private String code; private String desc; private String tableACode; //few other properties followed by getter and sette

我有两个表,如下所示:

tableA {

private String code;
private String desc;
//few other properties followed by getter and setter
}

tableB {

private String code;
private String desc;
private String tableACode;
//few other properties followed by getter and setter
}
现在,我想在tableB中为tableA定义一个@ManyToOne关系,这样我只想存储tableA.desc(我想在缓存这个对象时限制它在内存中的大小)

这样做可能吗

我试过下面的方法。。但结果查询并不是我所期望的

tableB {

private String code;
private String desc;
private String tableACode;


@ManyToOne
@JoinColumnsOrFormulas(value = {@JoinColumnOrFormula(column=@JoinColumn(name = "tableACode", referencedColumnName = "code")),
        @JoinColumnOrFormula(formula = @JoinFormula(value = "SELECT a.desc from tableA e WHERE a.code = tableACode", referencedColumnName = "tableACode"))})
private String tableADesc;
//few other properties followed by getter and setter
}

只有创建仅包含以下内容的EntityA时,才有可能:

  • 身份证
  • 描述
然后,您只需在EntityB中使用@ManyTone即可:

@ManyToOne
private EntityA entityA;
因此,即使EntityA数据库表有多个列,也只能持久化
desc

对于新的EntityA条目,所有非持久化列都将设置为NULL,这可能会破坏一些非NULL约束,因此请注意