簡體   English   中英

客戶端發送的請求在語法上不正確

[英]The request sent by the client was syntactically incorrect

我正在使用Spring Hibernate調用存儲過程,在這里我有兩個名為DataValueTable和employee的表。在post方法中,當我從postclient發布數據時

客戶端發送的請求在語法上不正確

僅對於DataValueTable,post方法不起作用。對於員工來說,所有操作都執行良好。任何人都可以指導我為什么它顯示錯誤。

控制器方式

  @Controller
@RequestMapping("/DataValueTable")
public class DataController {

    @Autowired
    DataServices dataServices;

    static final Logger logger = Logger.getLogger(DataController.class);

    @RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)  
     public @ResponseBody  
     Status addData(@RequestBody DataValueTable dataObject) {  
      try {  
           dataServices.addDataEntity(dataObject);  
       return new Status(1, "data added Successfully !");  
      } catch (Exception e) {  
       // e.printStackTrace();  
       return new Status(0, e.toString());  
      }  }

DataValueTable.java

    @Entity  
@Table(name = "DataValueTable")  
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})  
public class DataValueTable  implements Serializable {  

 private static final long serialVersionUID = 1L;  

 @Id  
 @GeneratedValue  
 @Column(name = "ID")  
 private long ID;  

 @Column(name = "Datatype")  
 private String Datatype;  

 @Column(name = "Datacategory")  
 private String Datacategory;  

 @Column(name = "DataValue")  
 private String DataValue;  

public long getID() {
    return ID;
}

public void setID(long ID) {
    this.ID = ID;
}

public String getDatatype() {
    return Datatype;
}

public void setDatatype(String Datatype) {
    this.Datatype = Datatype;
}

public String getDatacategory() {
    return Datacategory;
}

public void setDatacategory(String Datacategory) {
    this.Datacategory = Datacategory;
}

public String getDataValue() {
    return DataValue;
}

public void setDataValue(String DataValue) {
    this.DataValue = DataValue;
}}

spring.xml

   <?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"  
 xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  
  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd  
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">  

 <context:component-scan base-package="com.beingjavaguys.controller" />  
 <mvc:annotation-driven />  

 <bean id="dataSource"  
  class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
  <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />  
  <property name="url" value="jdbc:sqlserver://localhost;database=Sample" />  
  <property name="username" value="scgg" />  
  <property name="password" value="rtyt" />  
 </bean>  


 <bean id="sessionFactory"  
 class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
 <property name="dataSource" ref="dataSource" />  
 <property name="annotatedClasses">  
 <list>  
   <value>com.beingjavaguys.model.Employee</value>   
      <value>com.beingjavaguys.model.DataValueTable</value> 
   </list>  
  </property>  
  <property name="hibernateProperties">  
   <props>  

    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>  
    <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
   </props>  
  </property>  
 </bean>  


 <bean id="txManager"  
  class="org.springframework.orm.hibernate4.HibernateTransactionManager">  
  <property name="sessionFactory" ref="sessionFactory" />  
 </bean>  

 <bean id="persistenceExceptionTranslationPostProcessor"  
  class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />  

 <bean id="dataDao" class="com.beingjavaguys.dao.DataDaoImpl"></bean>  
 <bean id="dataServices" class="com.beingjavaguys.services.DataServicesImpl"></bean>  
</beans>  

DataDoaImpl.java

   @Override  
     public boolean addDataEntity(DataValueTable dataObject) throws Exception {  

      session = sessionFactory.openSession();   
      Transaction t = session.beginTransaction();
      int ival = session.createSQLQuery("EXEC createData @datatype=N'"+dataObject.getDatatype() +"',@datacategory=N'" + dataObject.getDatacategory() +"',@datavalue=N'" + dataObject.getDataValue() +"'").executeUpdate();
      t.commit();  
      session.close();  
      return false;  
     }  

要求格式

{
"ID":1,
"Datatype": "asd",
"Datacategory": "assaa",
"DataValue": "asassasa"

}

如果要屏蔽控制器不必要的元素/屬性,請嘗試在DataValueTable類上使用以下annotation

  @JsonIgnoreProperties(ignoreUnknown = true) 

嘗試將DataValueTable的屬性更改為以下屬性(使用駝峰式的情況),然后生成getter和setter方法。

{
"id":1,
"dataType": "asd",
"dataCategory": "assaa",
"dataValue": "asassasa"
}

更新資料

傑克遜也非常有力且有限制性。 它很好地執行了命名約定,使用您自己的命名策略的一種方法是擴展

com.fasterxml.jackson.databind.PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy

如果不可能,請使用@JsonProperty("MyJsonProperty")注釋您的屬性,但首先需要遵循命名約定,因此原始答案更合適。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM