我有一个像下面这样的实体
@Entity
@Table(name="PRODUCTS")
public class Feed implements Serializable{
private static final long serialVersionUID = -1732936132016478456L;
@Id
@GeneratedValue( strategy = GenerationType.AUTO)
@Column(name = "ID")
private int id;
@Column(name = "IMAGE_PATH")
private String imagePath;
@Column(name = "DESCRIPTION")
private String description;
@ManyToOne
@JoinColumn(name="UPLOADER", nullable = false)
private User uploader;
@Column(name = "TAGS")
private String tags;
@Column(name = "DATE", columnDefinition="")
private Date date;
@Column(name = "LINK")
private String link;
}
我使用以下代码创建实体
@Transactional
@Override
public Feed createFeed(Feed feed) {
this.entityManager.persist(feed);
this.entityManager.flush();
}
一切都运行良好但是DATE列是timestamp类型并且默认设置为CURRENT_TIMESTAMP只是填充日期部分而不是时间部分。 我尝试正确地触发手动查询和填充时间戳。 我错过了吗?
答案 0 :(得分:0)
如果日期类型为java.sql.Date
,则JPA仅将日期部分存储在数据库字段中。
如果是java.util.Date
,您必须添加@Temporal(TemporalType.TIMESTAMP)
以存储时间部分。
TemporalType
定义日期的精确度。
https://docs.oracle.com/javaee/6/api/javax/persistence/TemporalType.html
答案 1 :(得分:0)
我得到了解决方案。
我仍然不知道原因,这就是为什么我没有将此标记为答案。
我用@Temporal(TemporalType.DATE)
注释了我的日期变量,这就是诀窍。
有一点需要注意:我曾使用过java.util.Date