Отправьте запрос в Spring JPA, когда я хочу выполнить запрос вставки - PullRequest
2 голосов
/ 25 сентября 2019

Я хочу выполнить следующий запрос на вставку

INSERT into table_PO(
    (SELECT * from tble_PO_copy WHERE PO_id = 
        (SELECT PO_id FROM TABLE sales WHERE id =?1))
)

Обратите внимание, что здесь у меня нет объекта, который можно вставить в таблицу table_PO.У меня есть целое число, которое я хочу перенести в класс репозитория.Когда я вставлял сущность, я делал иначе:

Класс модели

public Sales createSales(Sales sales) {
        Client client = ClientBuilder.newClient();
        Sales response = client.target(URI.contextPathUI + "/api/sales").request()
                .post(Entity.entity(sales, MediaType.APPLICATION_JSON), Sales.class);
        return response;
}

Класс контроллера

@Autowired
private SalesRepository salesRepository;

// ..........
// ..........

@PostMapping("/salesOrder")
    private ResponseEntity<Sales> createAdvanceSales(@RequestBody Sales sales) {
        sales = salesService.createSalesOrder(sales);
        return new ResponseEntity<>(sales, HttpStatus.CREATED);
}

и в классе SalesServiceImpl

@Override
public Sales createSalesOrder(Sales sales) {
        sales = salesRepository.save(sales);    
}

Но я хотел бы иметь возможность реализовать запрос INSERT.Я знаю, что могу создать интерфейс репозитория, который расширяет JpaRepository, но в каком формате писать Model class.Извиняюсь за то, что не смог выразить мой вопрос настолько эффективно, насколько это возможно.Я новичок в весне и JPA.Что я действительно хочу, так это написать класс модели Client-response, чтобы мне не нужно было передавать сущность, как я это делал, как показано выше.Я хочу пометить его как пост-запрос и передать целое число в отличие от .post(Entity.entity(sales, MediaType.APPLICATION_JSON), Sales.class);, когда я передаю сущность.

1 Ответ

1 голос
/ 26 сентября 2019

Я бы рассмотрел один из двух вариантов.

  1. Хотя запрос не использует класс модели, он может сильно относиться к классу модели, если в этом случае я быдобавьте метод в хранилище для этой модели и используйте аннотации @Modifying и @Query для настройки оператора вставки.

  2. Если он действительно не зависит от каких-либо моделей, вы можете простосоздайте bean-компонент Spring, вставьте в него JdbcTemplate или EntityManager и используйте его для выполнения оператора.Так что в этом случае нет хранилища.

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