小编swi*_*ler的帖子

使用JPA/QueryDSL的类似Pivot的结果

我们在项目中使用JPA2,Spring Data和QueryDSL.我有以下表格和相关的JPA实体:

table Person (id, ...) 

table Activity (id, type, ...)

@Entity
@Configurable
public class Activity {
   @ElementCollection
   @CollectionTable(joinColumns = @JoinColumn(name = "ACTIVITY_ID"))
   @NotEmpty
   @Valid
   private Set<ActivityName> names = new HashSet<>();

table ActivityName(activity_id, name, ...) 

@Embeddable
  @Immutable
  @Table(uniqueConstraints = @UniqueConstraint(columnNames = "NAME"))
  public static class ActivityName { ... }

table ActivityLevel(person_id, activity_id, level) 

@Entity
@Immutable
@Validated
public final class ActivityLevel{...}
Run Code Online (Sandbox Code Playgroud)

1..n for Actitivy to ActivityName - 活动可能有不同的名称(例如跑步,慢跑)

一个人可能对某个特定活动具有一定的水平,并且可以执行多个活动(每个活动都有一个定义的级别).

  • 应该搜索活动名称(例如跑步等)作为参数(活动名称列表)
  • 因此,应该找到执行相关活动的所有人员.
  • 结果应包含搜索所有活动的相应级别,人员姓名和人员活动的总和

示例以下数据:

  • Person =(id = 1,name = Bob)
  • Person =(id …

java sql pivot jpa querydsl

8
推荐指数
1
解决办法
1087
查看次数

标签 统计

java ×1

jpa ×1

pivot ×1

querydsl ×1

sql ×1