JHipster - 使用 GET 方法插入数据库
JHipster - Insert in the database with the GET method
我必须使用 Jhipster 创建一个应用程序,但我以前从未使用过它。
当用户向地址 http://localhost:8080/api/newmesure/{mac-address}/{value}
发送 GET 请求时
我想在我的数据库中插入一个新的度量。
首先,我创建了 3 个实体 "Plantes"、"Capteurs" 和 "Mesures",格式如下:
图片在这里:https://i.stack.imgur.com/zJqia.png(我不允许post)
我激活了 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() +
"}";
}
}
楼安
用 JHipster 学习 java 可能不是一个明智的主意,它使用了非常丰富的技术栈,除非你投入足够的时间来学习基础知识,否则你可能会迷失方向。
您的代码和方法有很多错误:
- 您不能在您的 REST 控制器方法 a 的主体内使用
@Query
注释,它必须在您的 @Repository
接口中使用,此代码无法编译。有关快速介绍,请参阅 https://www.baeldung.com/spring-data-jpa-query
- JPA 过滤与插入数据库无关
- 在HTTP/REST中,GET方法应该是幂等的。要在数据库中进行更改,您应该使用 POST 或 PUT 方法。参见
- 您的实体命名约定不一致:对实体使用单数形式 类 因为每个实体对象代表一个 Mesure 实例。这里有
Plantes
(复数)、Capteur
(单数)和 Mesures
(复数)。对于 table 名称,JHipster 使用单数,但复数也很常见,因为 table 包含很多行。当然,这只是一个约定,您或您的团队可能会决定应用另一个约定(例如 table 名称的前缀),但关键是要保持一致。
我必须使用 Jhipster 创建一个应用程序,但我以前从未使用过它。
当用户向地址 http://localhost:8080/api/newmesure/{mac-address}/{value}
发送 GET 请求时
我想在我的数据库中插入一个新的度量。
首先,我创建了 3 个实体 "Plantes"、"Capteurs" 和 "Mesures",格式如下:
图片在这里:https://i.stack.imgur.com/zJqia.png(我不允许post)
我激活了 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() +
"}";
}
}
楼安
用 JHipster 学习 java 可能不是一个明智的主意,它使用了非常丰富的技术栈,除非你投入足够的时间来学习基础知识,否则你可能会迷失方向。
您的代码和方法有很多错误:
- 您不能在您的 REST 控制器方法 a 的主体内使用
@Query
注释,它必须在您的@Repository
接口中使用,此代码无法编译。有关快速介绍,请参阅 https://www.baeldung.com/spring-data-jpa-query - JPA 过滤与插入数据库无关
- 在HTTP/REST中,GET方法应该是幂等的。要在数据库中进行更改,您应该使用 POST 或 PUT 方法。参见
- 您的实体命名约定不一致:对实体使用单数形式 类 因为每个实体对象代表一个 Mesure 实例。这里有
Plantes
(复数)、Capteur
(单数)和Mesures
(复数)。对于 table 名称,JHipster 使用单数,但复数也很常见,因为 table 包含很多行。当然,这只是一个约定,您或您的团队可能会决定应用另一个约定(例如 table 名称的前缀),但关键是要保持一致。