【发布时间】:2015-11-28 07:39:34
【问题描述】:
我的实体类:
@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 类型。
【问题讨论】:
-
您是否应用了
Joda-Time-Hibernate映射? -
什么意思?无论我在上面发布什么,这就是我所做的一切
-
Hibernate 不理解 Joda,因此它可能只是退回到将数据作为字符串发送,而 MySQL 不理解/支持字符串值。
-
那么我应该怎么做这个映射呢?
-
@Andreas 哪个链接?!
标签: java mysql spring hibernate jpa