关于hibernate关系注释的投影

时间:2015-01-21 21:49:42

标签: 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 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
}

1 个答案:

答案 0 :(得分:0)

只有当您创建EntityA以仅包含:

时,才有可能
  • ID
  • 递减

然后你可以在EntityB中使用@ManyToOne:

@ManyToOne
private EntityA entityA;

因此,即使您的EntityA数据库表有多个列,您也只能保留desc

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