首页 > 解决方案 > 数据截断:第 1 行的“内容”列的数据太长

问题描述

*引起:com.mysql.jdbc.MysqlDataTruncation:数据截断:第 1 行的列“内容”的数据太长

我试图解决这个问题很多天

姓名:vivek srivastava
描述:联系人
文件:文件 内容类型
:应用程序/pdf
服务:托管,共同定位
休眠:插入文档(地址、联系人、内容、手机号、姓名、名称、服务提供、状态、上传日期)值(? , ?, ?, ?, ?, ?, ?, ?, ?) org.hibernate.exception.DataException:无法插入:[com.ams.bean.Document]

package com.ams.bean;

import java.sql.Blob;
import java.sql.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;

@Entity
@Table(name="documents")
public class Document {

    @Id
    @GeneratedValue
    @Column(name="id")
    private Integer id;

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

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

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

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

    @Column(name="content")
    @Lob
    private Blob content;

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

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

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

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

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMobileno() {
        return mobileno;
    }

    public void setMobileno(String mobileno) {
        this.mobileno = mobileno;
    }

    public String getContact() {
        return contact;
    }

    public void setContact(String contact) {
        this.contact = contact;
    }

    public Blob getContent() {
        return content;
    }

    public void setContent(Blob content) {
        this.content = content;
    }

    public String getServiceprovided() {
        return serviceprovided;
    }

    public void setServiceprovided(String serviceprovided) {
        this.serviceprovided = serviceprovided;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getUploaddate() {
        return uploaddate;
    }

    public void setUploaddate(String uploaddate) {
        this.uploaddate = uploaddate;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPoname() {
        return poname;
    }

    public void setPoname(String poname) {
        this.poname = poname;
    }enter code here


}

    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(
            @ModelAttribute("document") Document document,
            @RequestParam("file") MultipartFile file) {


        System.out.println("Name:" + document.getName());
        System.out.println("Desc:" + document.getContact());
        System.out.println("File:" + file.getName());
        System.out.println("ContentType:" + file.getContentType());
        System.out.println("service:"+document.getServiceprovided());

        try {
            Blob blob = Hibernate.createBlob(file.getInputStream());

            document.setServiceprovided(document.getServiceprovided());
            document.setContent(blob);
            document.setAddress(document.getAddress());
            document.setName(document.getName());
            document.setPoname(document.getPoname());
            document.setMobileno(document.getMobileno());
            document.setStatus(document.getStatus());
            document.setUploaddate(document.getUploaddate());
            document.setContact(document.getContact());



        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            VMDao.save(document);
        } catch(Exception e) {
            e.printStackTrace();
        }

        return "redirect:/customer_details.do";
    }

      @Transactional(propagation=Propagation.REQUIRED)
        public void save(Document document) {
            Session session = sessionFactory.getCurrentSession();
            session.save(document);
        }

标签: hibernate

解决方案


异常很明显,内容 ID 的值太大(超过 64Kb)。考虑使用另一个,例如 MEDIUMBLOB 或 LONGBLOB:

BLOB 类型 对象类型 对象可以保存的值长度 TINYBLOB 从 0 到 255 字节 BLOB 从 0 到 65535 字节 MEDIUMBLOB 从 0 到 16 777 215 字节 LONGBLOB 从 0 到 4 294 967 295 字节


推荐阅读