【发布时间】:2013-01-07 18:06:22
【问题描述】:
我有这样的实体结构:
Product 1 -> N ProductCustomField
1 1
| |
M M'
Release 1 -> N' ReleaseCustomField
ProductCustomField 是一种“原型”——Release 可能具有的字段列表。
我想选择一个Release 对象,其中所有ReleaseCustomFields 的ProductCustomField 在Product 中,而Release 在其中。
示例:
MySoft 有自定义字段“downloadURL”,默认值为“”。 MySoft 已发布 1.0。 这个版本没有ReleaseCustomFields,但是因为它是MySoft的一个版本,我可以看出它可能有“downloadURL”自定义字段。
所以我想发布 MySoft 1.0 版本,其中包含定义“downloadURL”的地图(使用默认值“”)。
我知道我会在 SQL 中做什么,这将是一个不错的长而复杂的 SELECT,但可能。
我不知道如何在 JPA/Hibernate 中掌握它。
不确定这是否是在SELECT 中尝试实现的正确目标。
也许我宁愿用 INSERT 填充 Release 的自定义字段,然后简单地依赖映射(这已经有效)?
或者我应该在Release 中创建一个特殊属性,填充特殊查询? (我不介意使用 org.hibernate.* 注释。)
或者我应该做最简单的事情 - 使用 release.getProduct().getCustomFields() 并执行“对于 ProductCustomField 中的每个字段,使用 ReleaseCustomField 中的内容,否则使用 ProductCustomField#getDefault()?
【问题讨论】:
标签: hibernate select jpa jpql prototypal-inheritance