有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javacom。mysql。jdbc。MysqlDataTruncation:数据截断:第1行“DATE”列的数据太长

我的实体类:

@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 */

}

我在用乔达的时间约会。当我坚持时,它抛出以下异常:

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'DATE' at row 1

我的日期字段包含此值: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) 个答案

  1. # 1 楼答案

    创建新表时,在SQL代码中使用Datetime而不是Date

  2. # 2 楼答案

    似乎不能将毫秒与日期时间结合使用: mysql