Javascript 弹簧靴jpa can';t插入包含重音符号的字符串的行
我无法理解这个问题,因为我没有发现同样的问题。 我尝试插入类型为“pièces détachées”的产品。在浏览器路径/Produits上,产品不会显示,但当我从字符串中删除重音符号时,它将插入mysql数据库。我尝试在数据库中插入重音符号,查询是可以的。但我的代码不可能执行相同的操作。以下是我的Produit代码示例:Javascript 弹簧靴jpa can';t插入包含重音符号的字符串的行,javascript,json,spring-boot,jackson,Javascript,Json,Spring Boot,Jackson,我无法理解这个问题,因为我没有发现同样的问题。 我尝试插入类型为“pièces détachées”的产品。在浏览器路径/Produits上,产品不会显示,但当我从字符串中删除重音符号时,它将插入mysql数据库。我尝试在数据库中插入重音符号,查询是可以的。但我的代码不可能执行相同的操作。以下是我的Produit代码示例: //ajouter un produit @PostMapping(value = "/Produits") public ResponseEntity<Void&g
//ajouter un produit
@PostMapping(value = "/Produits")
public ResponseEntity<Void> ajouterProduit(@RequestBody ProduitDTO produit) {
Produit produitCK = new Produit();
produitCK.setIdPM(new ProduitMagasin(produit.getId(), produit.getIdMagasin()));
produitCK.setDateAjout(produit.getDateAjout());
produitCK.setEtatProduit(produit.getEtatProduit());
produitCK.setIdReference(produit.getIdReference());
produitCK.setNumeroSerie(produit.getNumeroSerie());
produitCK.setPrixVente(produit.getPrixVente());
produitCK.setTVA(produit.getTVA());
produitCK.setType(produit.getType());
Produit produitAdded = produitDao.save(produitCK);
if (produitAdded == null)
return ResponseEntity.noContent().build();
else
return new ResponseEntity<>(HttpStatus.CREATED);
}
package com.stationphone.db.model;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
/**
*
* @author Administrateur
*/
@Entity
public class Produit implements Serializable {
@EmbeddedId
private ProduitMagasin idPM;
@OneToOne
@JoinColumn(name = "id_magasin", insertable=false, updatable=false)
Magasin magasin;
public enum Type {
PIECES {
public String getString() {
return "pièces detachées";
}
},
VENTE {
public String getString() {
return "vente en magasin";
}
};
public abstract String getString();
}
private String type;
private int id_reference;
private String numero_serie;
private Timestamp date_ajout;
private float prix_vente;
private float tva;
private String etat_produit;
public ProduitMagasin getIdPM(){
return this.idPM;
}
public void setIdPM(ProduitMagasin id){
this.idPM=id;
}
public String getType(){
return this.type;
}
public void setType(String type){
this.type=type;
}
public int getIdReference(){
return this.id_reference;
}
public void setIdReference(int id_reference){
this.id_reference=id_reference;
}
public String getNumeroSerie(){
return this.numero_serie;
}
public void setNumeroSerie(String numero_serie){
this.numero_serie=numero_serie;
}
public Timestamp getDateAjout(){
return this.date_ajout;
}
public void setDateAjout(Timestamp date_ajout){
this.date_ajout=date_ajout;
}
public float getPrixVente(){
return this.prix_vente;
}
public void setPrixVente(float prix){
this.prix_vente=prix;
}
public float getTVA(){
return this.tva;
}
public void setTVA(float tva){
this.tva=tva;
}
public String getEtatProduit(){
return this.etat_produit;
}
public void setEtatProduit(String etat){
this.etat_produit=etat;
}
}
产品类别:
//ajouter un produit
@PostMapping(value = "/Produits")
public ResponseEntity<Void> ajouterProduit(@RequestBody ProduitDTO produit) {
Produit produitCK = new Produit();
produitCK.setIdPM(new ProduitMagasin(produit.getId(), produit.getIdMagasin()));
produitCK.setDateAjout(produit.getDateAjout());
produitCK.setEtatProduit(produit.getEtatProduit());
produitCK.setIdReference(produit.getIdReference());
produitCK.setNumeroSerie(produit.getNumeroSerie());
produitCK.setPrixVente(produit.getPrixVente());
produitCK.setTVA(produit.getTVA());
produitCK.setType(produit.getType());
Produit produitAdded = produitDao.save(produitCK);
if (produitAdded == null)
return ResponseEntity.noContent().build();
else
return new ResponseEntity<>(HttpStatus.CREATED);
}
package com.stationphone.db.model;
import java.io.Serializable;
import java.sql.Timestamp;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
/**
*
* @author Administrateur
*/
@Entity
public class Produit implements Serializable {
@EmbeddedId
private ProduitMagasin idPM;
@OneToOne
@JoinColumn(name = "id_magasin", insertable=false, updatable=false)
Magasin magasin;
public enum Type {
PIECES {
public String getString() {
return "pièces detachées";
}
},
VENTE {
public String getString() {
return "vente en magasin";
}
};
public abstract String getString();
}
private String type;
private int id_reference;
private String numero_serie;
private Timestamp date_ajout;
private float prix_vente;
private float tva;
private String etat_produit;
public ProduitMagasin getIdPM(){
return this.idPM;
}
public void setIdPM(ProduitMagasin id){
this.idPM=id;
}
public String getType(){
return this.type;
}
public void setType(String type){
this.type=type;
}
public int getIdReference(){
return this.id_reference;
}
public void setIdReference(int id_reference){
this.id_reference=id_reference;
}
public String getNumeroSerie(){
return this.numero_serie;
}
public void setNumeroSerie(String numero_serie){
this.numero_serie=numero_serie;
}
public Timestamp getDateAjout(){
return this.date_ajout;
}
public void setDateAjout(Timestamp date_ajout){
this.date_ajout=date_ajout;
}
public float getPrixVente(){
return this.prix_vente;
}
public void setPrixVente(float prix){
this.prix_vente=prix;
}
public float getTVA(){
return this.tva;
}
public void setTVA(float tva){
this.tva=tva;
}
public String getEtatProduit(){
return this.etat_produit;
}
public void setEtatProduit(String etat){
this.etat_produit=etat;
}
}
我希望我能在这里找到答案。谢谢
编辑:post方法:
public static HttpResponse post(Object object, String type){
HttpResponse response=null;
try{
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpPost postRequest = new HttpPost(getUrl(type));
System.out.println(getUrl(type));
ObjectMapper mapper= new ObjectMapper();
String jsonInString = mapper.writeValueAsString(object);
System.out.println(jsonInString);
StringEntity input = new StringEntity(jsonInString);
input.setContentType("application/json");
postRequest.setEntity(input);
response = client.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
System.out.println(response.getStatusLine().getStatusCode()+" ");
client.close();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
return response;
}
编辑2:tomcat local上的错误:
018-07-24 18:55:32.196警告10860---[nio-8084-exec-3].w.s.m.s.DefaultHandlerExceptionResolver:读取HTTP失败
信息:
org.springframework.http.converter.httpMessageNodeTableException:
JSON分析错误:无效的UTF-8中间字节0x63
位于[源:(PushbackInputStream);行:1,列:21];嵌套
异常为com.fasterxml.jackson.databind.JsonMappingException:
无效的UTF-8中间字节0x63
在[源:(PushbackInputStream);行:1,列:21]
在[源:(PushbackInputStream);行:1,列:16](通过
参考文献
链:com.stationphone.db.model.ProduitDTO[“type”])
感谢billy frost,我要做两件事:
HttpPost postRequest = new HttpPost(getUrl(type));
postRequest.setHeader("Content-Type", "application/json;charset=UTF-8");
StringEntity input = new StringEntity(jsonInString, "UTF-8");
我想知道,当你调用
persist
时有口音时,会出现什么异常……但没有告诉别人你没有给他们回答的机会。我没有看到任何异常,http响应是201(已创建).我只是注意到它根本不打印http响应,当有重音时,当它与201不同时,它会引发异常,但它不会显示任何内容。通常它应该显示代码201或execption。任何“不起作用”的内容“将给出一个错误。。。从呼叫返回或在日志中返回。没有这样的基本信息,没有什么可说的我忘了web服务是服务器端的我想我所做的修改是可以的我会在本地测试程序