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);
可以使用 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);