【问题标题】:Calculated Collection Mapping计算集合映射
【发布时间】:2013-08-07 07:32:57
【问题描述】:

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

我们有以下表格:

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

因此我创建了三个实体:

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

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

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

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

非常感谢您的所有投入!

【问题讨论】:

    标签: jpa jpa-2.0 eclipselink jpa-2.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

    【讨论】:

    • 这正是我想要的。我使用了直接使用 SQL 的 DescriptorCustomizer。完美运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2021-12-09
    相关资源
    最近更新 更多