JHipster - вставка в базу данных методом GET - PullRequest
0 голосов
/ 10 апреля 2020

Мне нужно создать приложение с Jhipster, но я никогда не использовал его раньше.
Когда пользователь отправляет запрос GET по адресу http://localhost: 8080 / api / newmesure / {ma c -адрес} / {значение}
Я хочу вставить новую меру в мою базу данных.

Сначала я создал 3 объекта "Plantes", "Capteurs" и "Mesures" в следующем формате:

Изображение здесь: https://i.stack.imgur.com/zJqia.png (мне запрещено публиковать)

Я активировал фильтрацию JPA, чтобы создать @Query для вставки данных в мой базы данных, но я прочитал, что это было невозможно.

В /src/main/java/com/mycompany/myapp/web/rest/MesuresRessources.java:

/**
 * REST controller for managing {@link com.mycompany.myapp.domain.Mesures}.
 */
@RestController
@RequestMapping("/api")
public class MesuresResource {

    private final Logger log = LoggerFactory.getLogger(MesuresResource.class);

    private static final String ENTITY_NAME = "mesures";

    @Value("${jhipster.clientApp.name}")
    private String applicationName;

    private final MesuresService mesuresService;

    private final MesuresQueryService mesuresQueryService;

    public MesuresResource(MesuresService mesuresService, MesuresQueryService mesuresQueryService) {
        this.mesuresService = mesuresService;
        this.mesuresQueryService = mesuresQueryService;
    }


    @GetMapping("/newMesure/{mac}/{value}")
    public String newMesure(@PathVariable String mac,@PathVariable int value) {

      log.debug("Adresse MAC : "+mac);
      log.debug("Valeur : "+value);

      @Query("SELECT valeur FROM Mesures WHERE id = 1") //not working
      Mesures getValeur(); //not working

      return "Mesure ajoutée";

    }
}

В /src/main/java/com/mycompany/myapp/domain/Mesures.java:

/**
 * A Mesures.
 */
@Entity
@Table(name = "mesures")
public class Mesures implements Serializable {

    private static final long serialVersionUID = 1L;

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

    @Column(name = "valeur")
    private Integer valeur;

    @ManyToOne(optional = false)
    @NotNull
    @JsonIgnoreProperties("macs")
    private Capteurs mac;

    // jhipster-needle-entity-add-field - JHipster will add fields here, do not remove
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getValeur() {
        return valeur;
    }

    public Mesures valeur(Integer valeur) {
        this.valeur = valeur;
        return this;
    }

    public void setValeur(Integer valeur) {
        this.valeur = valeur;
    }

    public Capteurs getMac() {
        return mac;
    }

    public Mesures mac(Capteurs capteurs) {
        this.mac = capteurs;
        return this;
    }

    public void setMac(Capteurs capteurs) {
        this.mac = capteurs;
    }
    // jhipster-needle-entity-add-getters-setters - JHipster will add getters and setters here, do not remove

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof Mesures)) {
            return false;
        }
        return id != null && id.equals(((Mesures) o).id);
    }

    @Override
    public int hashCode() {
        return 31;
    }

    @Override
    public String toString() {
        return "Mesures{" +
            "id=" + getId() +
            ", valeur=" + getValeur() +
            "}";
    }
}

Louan

1 Ответ

1 голос
/ 10 апреля 2020

Обучение java с помощью JHipster, вероятно, не является разумной идеей, так как использует очень богатый технологический стек, который может потерять вас, если вы не потратите достаточно времени на изучение основ.

В вашем мнении много неправильного код и подход:

  • Вы не можете использовать аннотацию @Query внутри тела метода a вашего REST-контроллера, ее необходимо использовать в интерфейсе @Repository, этот код не может скомпилироваться , См. https://www.baeldung.com/spring-data-jpa-query для быстрого ознакомления
  • Фильтрация JPA не связана с вставкой в ​​базу данных
  • В HTTP / REST метод GET считается идемпотентным. Для внесения изменений в вашу базу данных вы должны использовать методы POST или PUT. См. Что такое идемпотентность в методах HTTP?
  • Ваше соглашение об именовании сущностей не согласовано: используйте единственное число для классов сущностей, поскольку каждый объект сущности представляет один единственный экземпляр Mesure. Здесь у вас есть Plantes (множественное число), Capteur (единственное число) и Mesures (множественное число). Для имен таблиц JHipster использует единственное число, но множественное число также довольно распространено, поскольку таблица содержит много строк. Конечно, это всего лишь соглашение, и вы или ваша команда можете решить применить другой (например, префикс для имен таблиц), но ключевой момент должен быть последовательным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...