1

我有这样的实体结构:

Product  1 -> N   ProductCustomField
  1                       1
  |                       |
  M                       M'
Release  1 -> N'  ReleaseCustomField

ProductCustomField是一种“原型” - Release 可能具有的字段列表。

我想选择一个Release对象,其中所有对象ReleaseCustomFieldsProductCustomFieldProduct其中Release

例子:

MySoft 具有自定义字段“downloadURL”,默认值为“”。MySoft 已发布 1.0。这个版本没有ReleaseCustomFields,但因为它是MySoft 的一个版本,我可以看出它可能有“downloadURL”自定义字段。

因此,我希望 MySoft 1.0 版本带有定义“downloadURL”的地图(默认值“”)。

我知道我会在 SQL 中做什么,这将是一个不错的长而复杂的 SELECT,但可能。
我不知道如何在 JPA/Hibernate 中掌握它。

不确定这是否是尝试在SELECT. 也许我宁愿Release用 INSERT 填充 的自定义字段,然后简单地依赖映射(这已经有效)?
或者我应该在 中创建一个特殊属性Release,填充特殊查询?(我不介意使用org.hibernate.*注释。)
或者我应该做最简单的事情 - 采取release.getProduct().getCustomFields()并执行“对于 中的每个字段ProductCustomField,使用中的内容ReleaseCustomField,还是ProductCustomField#getDefault()其他方式?

4

1 回答 1

0

我选择了第三种方法。因为我使用了 Wicket 框架,所以我创建了一个模型,它给定一个release并且release.getProduct.getCustomFields().get("fieldName")能够获取默认值或实际值,并且在写入时更新releases' 字段值映射。

我开始得到,IllegalArgumentException: object is not an instance of declaring class但这很可能是一个不同的问题。

于 2013-01-29T01:43:47.480 回答