2014-09-12 184 views
1

我们有正在使用我们的JPA实体AuditingEntityListener一个Spring项目:这个值被自动对时设置有没有办法绕过AuditingEntityListener为测试设置数据?

@Column(name = "modified_time") 
@LastModifiedDate 
@Temporal(TemporalType.TIMESTAMP) 
private Date lastModifiedDate; 

@EntityListeners(AuditingEntityListener.class) 

我们的基本实体具有lastModifiedDate定义为实体被保存或更新 - 这是我们希望应用程序行为的方式。但是,当我们尝试在我们的测试套件中设置数据时,我们遇到了一些问题,因为在某些情况下(不是全部),我们想绕过此字段的自动设置并将其设置为自己的值。在这种特定情况下,我们试图订购一堆测试数据,然后对其进行测试。

有什么办法绕过或关闭AuditingEntityListener以创建测试数据?

回答

0

我可以想象以下解决方案:创建两个persistence.xml文件 - 一个用于生产,另一个用于测试目的:

  • 生产相关的persistence.xml包括参考orm_production.xml映射文件,指定AuditingEntityListenerentity-listener属性

  • 相关的persistence.xml的测试可包括参照指定AuditingEntityListenerentity-listener属性orm_test.xml马平文件。此外,你的基础机构必须完全在XML映射文件中定义,并指定:

    • metadata-complete属性:告诉提供商忽略代码注释
    • exclude-default-listeners属性:告诉提供商忽略实体监听,但只为相应的基本实体
相关问题