【问题标题】:JHipster - Insert in the database with the GET methodJHipster - 使用 GET 方法插入数据库
【发布时间】:2020-04-10 13:03:14
【问题描述】:

我必须使用 Jhipster 创建一个应用程序,但我以前从未使用过它。
当用户向地址http://localhost:8080/api/newmesure/{mac-address}/{value}发送GET请求时
我想在我的数据库中插入一个新的度量值。

首先我用这种格式创建了 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() +
            "}";
    }
}

卢安

【问题讨论】:

    标签: spring-boot jhipster


    【解决方案1】:

    使用 JHipster 学习 java 可能不是一个明智的想法,它使用了非常丰富的技术堆栈,除非你投入足够的时间来学习基础知识,否则可能会让你失去兴趣。

    你的代码和方法有很多错误:

    • 您不能在 REST 控制器的方法 a 的主体中使用 @Query 注释,它必须在您的 @Repository 接口中使用,此代码无法编译。快速介绍见https://www.baeldung.com/spring-data-jpa-query
    • JPA 过滤与插入数据库无关
    • 在 HTTP/REST 中,GET 方法应该是幂等的。要在数据库中进行更改,您应该使用 POST 或 PUT 方法。见What is idempotency in HTTP methods?
    • 您的实体命名约定不一致:对实体类使用单数,因为每个实体对象代表一个单独的 Mesure 实例。这里有Plantes(复数)、Capteur(单数)和Mesures(复数)。对于表名,JHipster 使用单数,但复数也很常见,因为一个表包含许多行。当然,这只是一个约定,您或您的团队可能会决定应用另一个约定(例如表名的前缀),但关键是要保持一致。

    【讨论】:

    • 我知道用 Jhipster 学习 java 这不是一个好方法,但我别无选择。感谢这篇文章,它将在这个项目中帮助我。我将尝试更多地了解 Spring。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多