отфильтрованные записи в Spring Data JPA - PullRequest
0 голосов
/ 14 сентября 2018

Привет. У вас есть две данные о сотруднике и адрес сотрудника, один с несколькими.

Объект сотрудника

 @Entity
 @Table(name = "employeeInfo")
 public class EmployeeInfo { 
   int employeeId;
   String employeeName;

   @OneToMany
   @JoinColumn(name = "employeeId")
   private List<Address> employeeAddress;
 }

Адрес объекта

@Entity
 @Table(name = "address")
 public class Address{ 
 int employeeId;
 String address;
 String landMark;
 String addressType
}

в приведенной выше структуре сотрудник имеет несколько адресов, например

Home address, work address, permanent address current address

всякий раз, когда я пытаюсь получить сущность по данным пружины

public EmployeeInfo findByEmployeeId(int employeeId)

, которую он возвращаетмне результат с четырьмя адресами.есть ли способ получить адрес на основании условия

Например

select * from employeeInfo where address ="homeAddress" and employeeId =1;

1 Ответ

0 голосов
/ 14 сентября 2018

Как правило, вы хотите получить адрес известного сотрудника, чтобы вы могли запросить адрес :

select a from address a where a.adressType= :type and a.employeeId = :id

или вы можете воспользоваться механизмом получения Spring Data репозитория запросов и добавить этот метод в вас AddressRepository:

Address findByAddressTypeAndEmployeeId(String type, Integer id)

РЕДАКТИРОВАТЬ

если вам нужны другие поля / данные, вы можете использовать DTO.

 public class EmployeeAddressInfo{
   String employeeName;
   Address address;
   EmployeeAddressInfo(String employeeName, Address address){
       this.employeeName = employeeName;
       this.address = address;
   }
   //getters setters
 }

и создать это DTO в вас EmployeeRepository

  @Query(select new com.example.EmployeeAddressInfo(employeeName, address)  from employeeInfo  where address.addressType =:type and employeeId =:id)
  EmployeeAddressInfo findAddressInfo(String type, Long id);

или вы можете использовать другие типы проекций

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...