【发布时间】:2016-03-15 05:27:40
【问题描述】:
可以用 JPA 自定义查询比较两个属性吗?
注册.java:
@Entity
public class Registration implements Serializable {
@Id
@GeneratedValue(generator = "uuid")
private UUID uuid;
@ManyToOne(targetEntity=Entry.class)
private Entry entry;
@ManyToMany(targetEntity=Rate.class,fetch = FetchType.EAGER)
private List<Rate> rate;
@ManyToMany(fetch = FetchType.EAGER)
private List<Planning> planning;
}
Rate.java:
@Entity
public class Rate implements Serializable {
@Id
@GeneratedValue(generator = "uuid")
private UUID uuid;
@ManyToOne
private Activity activity;
}
Planning.java:
@Entity
public class Planning implements Serializable {
@Id
@GeneratedValue(generator = "uuid")
private UUID uuid;
@OneToOne
private Location location;
@OneToOne(fetch = FetchType.EAGER)
private Coach coach;
@OneToOne
private Activity activity;
我将只检索 rate.activity.id = planning.activity.id 类似的内容:
public interface RegistrationDao extends CrudRepository<Registration, UUID> {
findByPlanningAndRateActivityEqualsPlanningActivityOrderByEntryLastnameAsc(Planning planning);
}
谢谢
【问题讨论】:
-
JPQL 允许比较 JPA 实体的许多字段。您在不是 JPA 实体模型中呈现的“模型”。
-
当然是为了简化。
-
那么你的问题是什么?如何以特定的方式形成 JPQL 查询(因为所有 JPA 教程都涵盖了这一点),或者您真的是关于 Spring Data JPA 的意思吗?
-
我想做类似rates.activity.id = planning.activity.id的事情。 JPA关键词怎么办。当然
findByPlanningAndRateActivityEqualsPlanningActivityOrderByEntryLastnameAsc不起作用 -
没有字段“rates”所以不知道这意味着什么。至于一些愚蠢的长方法名称,我猜这是 Spring-Data-JPA(因为没有人会使用他们自己选择的名称)......在这种情况下,也许你应该将问题标记为
标签: spring-boot spring-data spring-data-jpa