java - JPA:数据库生成的列

标签 java hibernate orm jpa

我遇到了 Hibernate 和 JPA 的问题。我的要求是列 CreatedDTTMLastUPDATEDDTTM 应该在数据库级别填充。我试过跟随但没有用。我的列设置为 NOT NULL。我收到“无法将 Null 插入 LastUpdatedDttm”异常。任何指导表示赞赏。

@Column(name="LAST_UPDATED_DTTM", insertable=false, updatable=false, columnDefinition="Date default SYSDATE") 
@org.hibernate.annotations.Generated(value=GenerationTime.INSERT) 
@Temporal(javax.persistence.TemporalType.DATE) 
private Date lastUpdDTTM; 

@Column(name="CREATED_DTTM”, insertable=false, updatable=false) 
@org.hibernate.annotations.Generated(value=GenerationTime.ALWAYS) 
@Temporal(javax.persistence.TemporalType.DATE) 
private Date createdDTTM;

最佳答案

无法重现。我在 Derby 上测试了以下实体:

@Entity
public class EntityWithGeneratedField {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "LAST_UPDATED_DTTM", insertable = false, updatable = false,
            columnDefinition = "Date default CURRENT_DATE")
    @org.hibernate.annotations.Generated(value = GenerationTime.INSERT)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date lastUpdDTTM;

    // getters, setters
}

并且下面的测试方法通过了:

@Test
public void testDateGenerationWhenInsertingEntityWithNullDate() {
    EntityWithGeneratedField e = new EntityWithGeneratedField();
    session.persist(e);
    session.flush();
    assertNotNull(e.getId());
    assertNotNull(e.getLastUpdDTTM());
}

下面是生成的SQL:

Hibernate: insert into EntityWithGeneratedField (id) values (?)
Hibernate: select entitywith_.LAST_UPDATED_DTTM as LAST2_83_ from EntityWithGeneratedField entitywith_ where entitywith_.id=?

一切都按预期进行。

我的建议:检查表的 DDL,检查原始 SQL INSERT 是否正常工作。我怀疑是数据库级别的问题,而不是 Hibernate 级别的问题。

关于java - JPA:数据库生成的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779381/

相关文章:

java - 创建数据库连接类java

java - StreamCorruptedException : invalid type code: AC

java - Mongodb 中的聚合

java - org.jboss.msc.service.DuplicateServiceException : Service jboss.naming.context.java.module.auth.auth.ValidatorFactory已经

java - hibernate 鉴别器

java - 持久化对象在 Hibernate 架构中是什么意思?

java - java中子字符串和字符串的区别

java - 是否可以动态选择要在 hibernate 搜索中使用的字段

java - 是否有一个基于 hibernate 构建的简单、可扩展的 CRUD 存储库?

ORM: Sequelize :多对多关系