Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试环境中的JPA@PrePersist_Java_Hibernate_Jpa_Dao - Fatal编程技术网

Java 测试环境中的JPA@PrePersist

Java 测试环境中的JPA@PrePersist,java,hibernate,jpa,dao,Java,Hibernate,Jpa,Dao,我使用@PrePersist方法onCreate()创建了GenericEntity类,该方法在将实体保存到数据库之前设置时间戳。它工作得很好,但当我尝试测试我的DAO类时,我面临着这个问题@PrePersist在保存实体时显式覆盖设置的创建的字段值。如何在测试环境中使@PrePersist成为可选的,以便我可以显式地设置created字段值 @MappedSuperclass public abstract class GenericEntity { @Id @Generat

我使用
@PrePersist
方法
onCreate()
创建了
GenericEntity
类,该方法在将实体保存到数据库之前设置时间戳。它工作得很好,但当我尝试测试我的DAO类时,我面临着这个问题
@PrePersist
在保存实体时显式覆盖设置的
创建的
字段值。如何在测试环境中使@PrePersist成为可选的,以便我可以显式地设置
created
字段值

@MappedSuperclass
public abstract class GenericEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", updatable = false, nullable = false)
    private Long id;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created", nullable = false)
    private Date created;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @PrePersist
    protected void onCreate() {
        created = new Date();
    }

    /*
     * Used for tests
     */
    public void setCreated(Date created) {
        this.created = created;
    }

    public Date getCreated() {
        return created;
    }
}

如果您授予set created value(通过setter)的访问权,则不应在
@PrePersist
方法中覆盖此值。我认为解决问题的最简单方法是简单的空检查:

@PrePersist
protected void onCreate() {
    if (created == null) {
        created = new Date();
    }
}

如果您授予set created value(通过setter)的访问权,则不应在
@PrePersist
方法中覆盖此值。我认为解决问题的最简单方法是简单的空检查:

@PrePersist
protected void onCreate() {
    if (created == null) {
        created = new Date();
    }
}

用户EntityListeners作为回调的拦截器:persistence.xml中有2个持久性单元。如何配置它们以对GenericeEntity类使用不同的EntityListeners?用户EntityListeners作为回调的拦截器:我在persistence.xml中有2个持久性单元。如何将它们配置为对GenericEntity类使用不同的EntityListeners?只是==而不是=是的,我的错误:)只是==而不是=是的,我错了:)