Spring + Hibernate选择性地将两个表合并为一个实体

时间:2015-10-20 09:23:37

标签: java mysql spring hibernate

我在MySQL中有两个关系,而一个实际上是另一个的孩子:

Table A (id, prop1, ... , prop N)
Table B (id, id_A, prop N+1, ..., prop N+M)

基本上,表A或多或少只有静态值,表B包含所有动态值。需要对表B的所有值进行版本化。

但是在Java App中我只需要最新版本,例如

select * from a JOIN b ON a.id = b.id_a
WHERE b.id = (SELECT max(id) FROM b WHERE propN+X = 42 GROUP BY id_a)

我想为两个关系只创建一个Model / Entity。我使用Spring 4.2.1和Hibernate 5.0.2

我无法找到使用SecondaryTable的解决方案,因为我无法过滤加入:

@SecondaryTable(name = "table_b",
pkJoinColumns = {@PrimaryKeyJoinColumn(name = "id_a", referencedColumnName = "id")})

是否可以使用NamedQuery或DB中的View实现此目的?对我来说,似乎无法绕过创建两个实体类和一个DAO来处理数据访问。如果是这样,合并两个实体(嵌入,一对多)的最佳方法是什么?

0 个答案:

没有答案