JPA: как получить результаты с помощью компрометации where - PullRequest
0 голосов
/ 04 июня 2019

У меня есть таблица с 30 столбцами.

Я заполняю объект в своем Java-коде.Теперь я хочу посмотреть в своей базе данных, если строка уже вставлена.Я могу сделать этот примитив, как:

SELECT * 
FROM tablename 
WHERE table.name=object.name 
  AND table.street=object.street 
  AND ... 
  AND ... 
  AND ...

Я думаю, вы поняли.Это работает, но, на мой взгляд, это не лучшее решение.

Существует ли какое-либо общее решение (например, мне не нужно менять код, если таблица изменяется), где я могу дать предложению where мой объект, и он может соответствовать самому себе?Кроме того, предложение where не столь масштабно.

1 Ответ

0 голосов
/ 04 июня 2019

Самое близкое, что приходит на ум - это Spring Data JPA Технические характеристики .

Вы можете выделить предложения where в экземпляре для конкретной сущности.

После этого вы просто передаете его любому из @Repository методов:

public interface UserRepository extends CrudRepository<User, Long>,
      JpaSpecificationExecutor<User> {
}

Тогда к вашим услугам:

  @Autowired
  private UrerRepository repo;

  public void findMatching() {
      List<User> users = repo.findAll(new MyUserSpecification());

Затем, когда изменяется db, вы просто изменяете одно место, которое является реализацией спецификации.

...