实体JOIN使用Spring Data Specification

时间:2018-04-07 10:54:29

标签: spring hibernate spring-data-jpa specifications jpa-criteria

我目前正在搞乱Spring Data JPA规范。我遇到了以下问题:如何使用JPA规范定义以下SQL Join?

SELECT * FROM competition c
   LEFT JOIN participation p ON c.id = p.competition_id
   LEFT JOIN team t ON p.team_id = t.id
   WHERE t.name = 'WDB'

请注意,CompetitionParticipationTeam是JPA实体(@Entity)!

1 个答案:

答案 0 :(得分:0)

JPQL查询可以如下;

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('announcements.urls')),
    path('faq/', include('FAQ.urls')),
    path('', include('account.urls')),
    path('forum/', include('forums.urls')),
]

以上假设从问题的原始描述中,实体的定义如下(访问者和其他细节省略)。

SELECT c FROM competition c 
LEFT JOIN c.participation p
LEFT JOIN p.team t
WHERE t.name = 'WDB'

如果您的返回对象不是竞争对象或其他实体对象,那么您可以定义另一个转移类并使用JPQL的NEW操作来返回它的实例。