2013-08-07 32 views
0

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

我们有如下表:

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

因此我创建了三个实体:

  • 故事(有许多SubStories)
  • SubStory(有许多公司)
  • 公司

到目前为止好,没有任何问题。但现在的要求:

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

请不要骂表结构,因为我不能改变它的时刻;-)

非常感谢提前对所有的投入!

回答

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

+0

这是正是我所期待的。我直接使用SQL使用DescriptorCustomizer。完美的作品。 – Thilo