У меня есть две таблицы: одна - клиент, а другая - клиентский отдел.У клиента есть отношение один ко многим с customerDepartment.
У меня есть определенное условие поиска, в котором мне нужно найти название отдела, если оно равно, мне нужно получить все строки отдела клиентов, включая клиентов.
Это то, что я пытался получить результаты
public interface CustomerRepository extends JpaRepository<Customer,Integer>{
@Query(value="select DISTINCT c from Customer c left join c.custDept cd where cd.deptName like %?1% ")
Page<Customer> findByName(String name, Pageable pageable);
}
Клиент
@Entity
@Table(name="customer")
public class Customer implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name= "customer_no",updatable = false, nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int customerNo;
@Column(name= "customer_name")
private String customerName;
@Column(name= "industry")
private String industry;
@JsonManagedReference
@OneToMany(mappedBy = "customer", cascade = CascadeType.ALL,
fetch=FetchType.LAZY)
private Set<CustomerDepartment> custDept;
}
CustomerDepartment:
@Entity
@Table(name = "customer_department")
public class CustomerDepartment implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "dept_id",updatable = false, nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private int depId;
@Column(name = "dept_name")
private String deptName;
@Column(name = "primary_contact")
private String primaryContact;
@JsonBackReference
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "customer_no", nullable = false)
private Customer customer;
}
Когда я искал DepartmentName =это, приведенный выше JPA-запрос, возвращающий приведенные ниже результаты
{
"content": [
{
"customerNo": 33,
"customerName": "Test1",
"industry": "High-Tech",
"country": "Australia",
"state": "Sa-Jose",
"city": "Sydney",
"custDept": [
{
"depId": 34,
"deptName": "It",
"primaryContact": "Banglore,Kormangala",
},
{
"depId": 35,
"deptName": "sales",
"primaryContact": "Banglore,Kormangala",
}
]
}
]
}
То, на что я рассчитываю, больше похоже.
{
"content": [
{
"customerNo": 33,
"customerName": "Test1",
"industry": "High-Tech",
"country": "Australia",
"state": "Sa-Jose",
"city": "Sydney",
"custDept": [
{
"depId": 34,
"deptName": "It",
"primaryContact": "Banglore,Kormangala",
}
]
}
]
}
Если это невозможно в JPA, есть ли способ, которым я могусделай это.Спасибо за помощь