JPA 查询等于两个属性

JPA query equals between two properties

可以使用 JPA 自定义查询比较两个属性吗?

Registration.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);

 }

谢谢

我已针对此解决方案进行了更改,但我认为这不是好方法(其中 rateActivity 和 planningActivity 必须具有相同的 ID)

public interface RegistrationDao extends CrudRepository<Registration, UUID> {

  Iterable<Registration> findByPlanningAndRateActivityEqualsAndPlanningActivityEqualsOrderByEntryLastnameAsc(Planning planning,Activity rateActivity,Activity planningActivity);

}

与其使用长方法名称,不如使用 JPA 查询,它应该是这样的。希望这有帮助。

@Query("select * FROM Registration REG,Entry E, Rate R,Planning P WHERE REG.id = :id and R.activity=P.activity ORDER BY E.lastname")

public List<Registration> <MethodName>(@Param("id") String registrationid);