休眠注释,指定列默认值

che*_*ine 4 java oracle orm hibernate jpa

我有一个域对象,注释如下

 @Entity
 @Table(name = "REQUEST")
 public class Request {

  /**
   * Unique id for this request
   */
@Id
@GeneratedValue
@Column(name = "EQ_ID")
private long requestId;
/**
 * 
 */
@Column(name = "EMAIL_ID")
private String emailId;
/**
 * 
 */
@Column(name = "REQUEST_DATE")
private Date requestDate;
/**
*Getters/setters omitted
*/
 }
Run Code Online (Sandbox Code Playgroud)

Request_date列不能为null,根据DDL,默认值为sysdate(oracle DB).如何对该字段进行注释,以便在requestDate属性为null时,hiberanate会自动插入sysdate.目前,当字段为空时,它会抛出错误,这非常明显,因为根据数据库约束它不能为空.我该怎么做?另一种方法是将此字段标记为瞬态,插入工作正常.但负面的方面是,我将无法检索(request_date列的)值.

YoK*_*YoK 8

您可以将默认值放在columnDefinition中.一个例子如下:

@Column(name = "REQUEST_DATE", nullable = false, columnDefinition = "date default sysdate")
Run Code Online (Sandbox Code Playgroud)


che*_*ine 7

这是hibernate注释中缺少的功能.Yok也发布了一些解决方法.问题是变通方法依赖于供应商,可能不适用于所有数据库.在我的情况下,Oracle,它没有工作,并被报告为一个错误.