Javascript 弹簧靴jpa can';t插入包含重音符号的字符串的行

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

我无法理解这个问题,因为我没有发现同样的问题。 我尝试插入类型为“pièces détachées”的产品。在浏览器路径/Produits上,产品不会显示,但当我从字符串中删除重音符号时,它将插入mysql数据库。我尝试在数据库中插入重音符号,查询是可以的。但我的代码不可能执行相同的操作。以下是我的Produit代码示例:

 //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服务是服务器端的我想我所做的修改是可以的我会在本地测试程序