com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的列'DATE'的数据太长

时间:2015-09-02 17:10:46

标签: java mysql spring hibernate jpa

我的实体类:

@Entity
@Table(catalog = "emp", name = "person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person implements Serializable {
private static final long serialVersionUID = 1L;

/**
 */

@Column(name = "ID", nullable = false,length = 50)
@Basic(fetch = FetchType.EAGER)
@Id
@XmlElement
String id;
/**
 */

@Column(name = "ADDRESS", length = 50)
@Basic(fetch = FetchType.EAGER)
@XmlElement
String address;
/**
 */

@Column(name = "EMAIL", length = 50)
@Basic(fetch = FetchType.EAGER)
@XmlElement
String email;



@Column(name = "DATE")
@Basic(fetch = FetchType.EAGER)
@XmlElement
DateTime date;
/**
 */

/*getters and setters */

}

我正在使用joda时间来约会。当我坚持下去时,会抛出这个异常:

  

引起:com.mysql.jdbc.MysqlDataTruncation:数据截断:第1行的列'DATE'的数据太长

我的日期字段包含此值:2015-09-02T16:24:05.226 + 04:00

以下是db:

中保存的代码
    public Person save(Person person) {

    Person currentPerson = entityManager.find(Person.class,
            person.getId());
    if (currentPerson != null) {
        entityManager.detach(currentPerson);
        person =entityManager.merge(person);
    } else {
        entityManager.persist(person);
    }
    return person;
}

我正在使用hibernate / jpa和mysql。我的数据库是基于我的实体类创建的。我的日期是我的实体类中的datetime类型,但在数据库中它的类型为tinyblob。

2 个答案:

答案 0 :(得分:1)

似乎你不能在Datetime中使用miliseconds: mysql

答案 1 :(得分:1)

在创建新表时,在SQL代码中使用Datetime代替Date