我有一个连接到mysql服务器的Play应用程序,在模型中,我有一些属性希望保存为DateTimes,但使用java.sql.Timestamp会在我的进化中产生用于创建表的属性
create table delivery (
id bigint auto_increment not null,
deleted tinyint(1) default 0,
description varchar(500),
notes varchar(1000),
account_id bigint,
customer_id bigint,
sender_id bigint,
recipient_id bigint,
delivery_status_id bigint,
delivery_type_id bigint,
package_type_id bigint,
item_type_id bigint,
call_date datetime(6),
pickup_date datetime(6),
delivery_date datetime(6),
no_of_pieces integer,
cust_type integer,
payment_type integer,
way_bill integer,
created_time date,
modified_time date,
createdby_id bigint,
modifiedby_id bigint,
constraint pk_delivery primary key (id))
这反过来又导致mysql错误:
我们得到了以下错误:您的SQL语法中有一个错误;查看与MySQL服务器版本对应的手册在near'(6(、modified_time-datetime(6(和createdby_id附近使用正确的语法bigint,mo'在第21行[错误:1064,SQLSTATE:42000],尝试运行此SQL脚本:
我了解到是大小参数(6(导致了这个问题,并能够通过使用java.sql.Date来避免它(因为它在进化中不会产生(。其他人有没有经历过这种情况,并知道在这种情况下存储DateTime的方法?
我能够通过使用@Column注释来定义sql中的类型来解决这个问题。
@Column(columnDefinition = "datetime")
public Timestamp createdAt;
我的答案可能有点晚,但您可以尝试使用以下注释:@CreatedTimestamp或@UpdatedTimestam。我已经用Play测试过了!框架2.3.x.
@Column(name = "created")
@CreatedTimestamp
protected Date created;
@Column(name = "updated")
@UpdatedTimestamp
protected Date updated;