CrudRepository Filter Отношение один ко многим - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть две сущности Customer и Order:

@Entity
public class Customer {

  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Long id;
  .....
  @OneToMany(mappedBy="customer")
  private Set<Order> orders = new HashSet<Order>();
  .....
}

@Entity
public class Order {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    ........
    @ManyToOne()
    private Customer;
    ........
}

В CrudRepository я хочу найти всех клиентов, у которых нет заказов. Как я могу написать @Query? Или как я могу написать метод в интерфейсе CrudRepository?

@Repository
public interface CustomerRepository extends CrudRepository<Customer, Long>{

  findBy ......

  @Query(".......")
  find.....

}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Необходимо использовать ключевое слово empty, которое можно использовать с выражениями коллекции (не нужно объединяться).

Запрос JPQL будет

select c from Customer c where c.orders is empty 
0 голосов
/ 17 февраля 2020

Для запроса данных, которых там нет, вы должны использовать left join, примерно так:

@Query("select c from Customer as c left join c.orders as orders where orders is null")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...