我有两个表格,如下所示:
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
}
答案 0 :(得分:0)
只有当您创建EntityA以仅包含:
时,才有可能然后你可以在EntityB中使用@ManyToOne:
@ManyToOne
private EntityA entityA;
因此,即使您的EntityA数据库表有多个列,您也只能保留desc
。
对于新的EntityA条目,所有非持久化列都将设置为NULL,这可能会破坏一些NOT NULL约束,因此请注意它。