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时,才有可能:
- 身份证
- 描述
@ManyToOne
private EntityA entityA;
因此,即使EntityA数据库表有多个列,也只能持久化desc
对于新的EntityA条目,所有非持久化列都将设置为NULL,这可能会破坏一些非NULL约束,因此请注意