我对 Spring JPA 有点陌生,所以如果我的问题听起来很基本,我提前道歉。我有 2 个实体对象:OrderInfo 和 PersonInfo。班级如下:
@Entity
@Table(name="order_info")
@NamedQuery(name="OrderInfo.findAll", query="SELECT o FROM OrderInfo o")
public class OrderInfo implements Serializable {
@Column(name="order_number")
private String orderNumber;
//bi-directional many-to-one association to PersonInfo
@ManyToOne
@JoinColumn(name="person_id")
private PersonInfo personInfo;
public String getOrderNumber() {
return this.orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public PersonInfo getPersonInfo() {
return this.personInfo;
}
public void setPersonInfo(PersonInfo personInfo) {
this.personInfo = personInfo;
}
}
以及 Person 实体:
@Entity
@Table(name="person_info")
@NamedQuery(name="PersonInfo.findAll", query="SELECT p FROM PersonInfo p")
public class PersonInfo implements Serializable {
//bi-directional many-to-one association to OrderInfo
@OneToMany(mappedBy="personInfo")
private List<OrderInfo> orderInfos;
public List<OrderInfo> getOrderInfos() {
return this.orderInfos;
}
public void setOrderInfos(List<OrderInfo> orderInfos) {
this.orderInfos = orderInfos;
}
public OrderInfo addOrderInfo(OrderInfo orderInfo) {
getOrderInfos().add(orderInfo);
orderInfo.setPersonInfo(this);
return orderInfo;
}
public OrderInfo removeOrderInfo(OrderInfo orderInfo) {
getOrderInfos().remove(orderInfo);
orderInfo.setPersonInfo(null);
return orderInfo;
}
}
这两个类是使用 JPA 的 createentityfromtable 选项在 Eclipse 中自动生成的。
现在,我正在尝试编写一个 CRUDRepository 来获取给定 orderNumber 和 personId 的 OrderInfo。如果 OrderInfo 对象中有一个 personId 字段,我可以写类似的内容
@Repository
public interface OrderRepository extends CrudRepository<OrderInfo, Integer>{
public OrderInfo findByPersonIdAndOrderNumber(@Param("personId") Long personId, @Param("orderNumber") String orderNumber);
}
但是,现在 OrderInfo 实体没有 personId。相反,它具有对 Person 的引用(同样,我没有编写实体类。它们是由 Eclipse 自动生成的)。我现在应该如何编写 findBy() 方法?
提前致谢。