java - hibernate 注解,指定列默认值

标签 java oracle hibernate orm 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
*/
 }

Request_date 列不能为空,根据 DDL,默认值为 sysdate (oracle DB)。如何注释此字段,以便如果 requestDate 属性为 null,hiberanate 会自动插入 sysdate。?当前,当字段为 null 时它会抛出错误,这很明显,因为根据 DB 约束,它不能为 null。我该怎么做? 一种替代方法是将此字段标记为 transient ,插入工作正常。但不利的一面是,我将无法检索(request_date 列的)值。

最佳答案

这是 hibernate 注释中缺少的功能。正如 Yok 发布的那样,也存在一些解决方法。问题是解决方法取决于供应商,可能不适用于所有数据库。在我的例子中,Oracle,它不工作并且被报告为一个错误。

关于java - hibernate 注解,指定列默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3413487/

相关文章:

mysql - 查询末尾的多个窗口定义

c++ - MFC中的数据库

java - 如何在 Spring Boot 项目中禁用 Hibernate 验证

java - 如何在您自己的 NamingStrategy 实现中处理 @JoinColumn?

java - 有没有一种方法可以在不在 hibernate 状态下加载父项的情况下将父项与子项链接起来?

java - Lucene 按顺序查询

java - EC 签名大小?

java - sql 或 sqlite 查询并在列表中获取结果

java - 如何在 Java 中合并两个不可变集?

java - 将可变参数从 Java 代码传递到 SQL 或 PL/SQL