Как обновить конкретную сущность / строку в диспетчере сущностей jpa - PullRequest
1 голос
/ 24 сентября 2019

Я бы хотел, чтобы кто-нибудь помог мне с обновлением строки в диспетчере сущностей.Вот таблица ex, угловая, где данные отправляются в службу отдыха: app.html

<tr *ngFor="let myCar of cars$ | paginate: { itemsPerPage: count, currentPage: p }; let i = index">
            <td>{{ (p - 1) * count + i + 1 }}</td>
            <td>{{myCar.name}}</td>
            <td>{{myCar.price}}</td>
            <td><button type="submit" class="btn btn-secondary" (click)="fillForm(myCar)">
                    <i class="glyphicon glyphicon-edit"></i>Edit
                </button></td>
</tr>

carsDTO.java

@Id
@Column(name = "name")
private String name;

@Column(name = "price")
private String price;

service.java

public carsDTO updateCar(carDTO cars){
  TypedQuery<myquerycalss> query = entitymanager.createNamedQuery("sqlName", 
  myquerycalss.class);
  // I need help to complete this update method
  // Maybe no need to first find by id, the row gets update based on @id 
  // on the name
}

resource.java

@PUT
@Path("/updatecars")
public Response updateCar(){
    // no preblem here
}

Примечание. Вы можете увидеть это в app.html Iсгенерирован ID, но мой класс jave содержит только переменные name и price.

Каков наилучший подход для обновления выбранной сущности, то есть полей записи базы данных, в моем service.java?URL моего ресурса без параметра, то есть URL: ... / updatecars

1 Ответ

0 голосов
/ 24 сентября 2019

Ваш ресурс должен получить выбранную и измененную машину во внешнем интерфейсе.Вы можете изменить его, чтобы получать внутри тела запроса, используя это:

@RequestMapping(method = RequestMethod.PUT, value = "/updatecars")
public Response updateCar(@RequestBody() carDTO car){
    // here you call the service, passing the car as parameter
    service.updateCar(car);
}

Внутри вашего углового компонента, вы должны указать автомобиль, выбранный в запросе http.Примерно так:

saveCar(car: carDTO){
    return this.httpBase.put(this.url, car, this.options)
        .map(dados => dados.json());  // handle the return here....
}

Внутри вашего сервиса:

public carsDTO updateCar(carDTO cars) {
    TypedQuery<myquerycalss> query = entitymanager.createNamedQuery("sqlName", myquerycalss.class);
    query.setParameter("name", cars.getName());
    query.setParameter("price", cars.getPrice());
    query.executeUpdate();
    ...
}

Я предполагаю, что ваш именованный SQL-запрос выглядит так:

UPDATE cars SET price = :price WHERE name = :name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...