0

Eclipselink(或者甚至更好地使用标准 JPA 2.x)是否可以使用 JPQL 或 SQL 来定义计算的集合映射?

我们有以下表格:

  • 故事
  • substory(故事的外键)
  • substory_x_company(子故事和公司的外键)
  • 公司

因此我创建了三个实体:

  • 故事(有很多子故事)
  • 子故事(有很多公司)
  • 公司

到目前为止一切顺利,没有问题。但是现在的要求:

我应该在实体 Story 中映射所有公司的集合(按名称排序),如果这可以直接在实体内部实现就好了(而不是使用单独的 DAO,甚至从子故事中收集和排序所有公司) )。我问这个,因为 Story 有 15 个其他关系,设计方式与上述相同,我希望尽可能减少样板文件。

请不要批评表结构,因为我暂时无法更改它;-)

非常感谢您的所有投入!

4

1 回答 1

1

您可以定义一个数据库视图,将 Story/Company 关系定义为 ManyToMany 关系(或使其成为真实表)。

http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Views

使用 EclipseLink,您可以使用任意表达式来映射关系,

http://wiki.eclipse.org/EclipseLink/Examples/JPA/MappingSelectionCriteria

或者,您也可以使用自己的自定义 SQL,

http://wiki.eclipse.org/EclipseLink/Examples/JPA/CRUDStoredProcedures

于 2013-08-07T13:20:17.073 回答