org.hibernate.exception.DataException:无法执行JDBC批量更新

时间:2012-02-22 20:50:19

标签: java exception jdbc axis

AxisFault

 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException  
 faultSubcode:  
 faultString: org.hibernate.exception.DataException: Could not execute JDBC batch update  
 faultActor:  
 faultNode:  
 faultDetail: 
    {http://xml.apache.org/axis/}hostname:XXX


org.hibernate.exception.DataException: Could not execute JDBC batch update
    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
    at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at stickler.webservice.v1.WebServicePortBindingStub.publish(WebServicePortBindingStub.java:548)
    at com.infopath.main.Main.moduleRequestOne(Main.java:41)
    at com.infopath.main.Main.main(Main.java:23)

3 个答案:

答案 0 :(得分:0)

Data truncation: Data too long for column 'data'

这意味着您尝试在“数据”列中存储一个字符串,该字符串的长度超过了根据数据库的最大允许大小。你必须增加这个尺寸。例如,如果您直接使用JPA:

@Column(name = "data", length = 65536)
public string getData() {
    ...
}

答案 1 :(得分:0)

异常是由于批量更新失败。这不仅意味着列中的数据大于允许的大小,还可能意味着不兼容的数据。例如。日期列中的数据可能格式错误,即列需要 'yyyy-mm-dd' 格式,而数据为 'dd-mm-yyyy'。数据不兼容导致更新失败的情况还有很多。

答案 2 :(得分:-1)

只需在POJO列的定义中使用@Lob即可。