Spring JPA审核不更新行

时间:2014-08-06 03:04:33

标签: spring spring-mvc spring-data-jpa

我正在尝试使用JPA审核框架配置Spring JPA以更新时间戳列。

我认为我已正确配置它,但每当我创建或更新行时,它只在所有可审核字段上设置为null。 (注意字段是在数据库中创建的,如果我手动写入一个值,它将被null覆盖。)

我在这里缺少什么?我是否需要明确设置上次修改日期等?

我的审核员bean也没有被触发,我设置了一个断点并且它从未输入,这让我怀疑我错过了审计服务的一些配置。

到目前为止,我有这些定义:

@Configuration
@EnableTransactionManagement
@EnableJpaAuditing(auditorAwareRef = "auditorBean")
@EnableJpaRepositories(basePackages="com.ideafactory.mvc.repositories.jpa")
public class PersistenceConfig
{...

审核员意识到的课程:

@Component
public class AuditorBean implements AuditorAware<Customer> {
    private static final Logger LOGGER= LoggerFactory.getLogger(AuditorBean.class);

    private Customer currentAuditor;

    @Override
    public Customer getCurrentAuditor() {
        //  Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        //
        //     if (authentication == null || !authentication.isAuthenticated()) {
        //       return null;
        //     }
        //
        //     return ((MyUserDetails) authentication.getPrincipal()).getUser();
        LOGGER.debug("call AuditorAware.getCurrentAuditor(");

        return currentAuditor;
    }

    public void setCurrentAuditor(Customer currentAuditor) {
        this.currentAuditor = currentAuditor;
    }
}

我的实体配置:

@Entity
@Table(name= "contact_us_notes")
public class ContactUsNote extends AbstractAuditable<Customer, Long> {...

==========================更新==================== ======== 好的,我回过头来看看,似乎我错过了配置实体监听器。所以它现在有点工作了。

但现在我的问题变成了如何在java配置中将侦听器配置为所有实体的默认值? (类似于docs在orm.xml中推荐的方式)。

我在下面添加了实体监听器注释。

@Entity
@Table(name= "contact_us_notes")
@EntityListeners({AuditingEntityListener.class})
public class ContactUsNote extends AbstractAuditable<Customer, Long> {

1 个答案:

答案 0 :(得分:2)

您是否在/ resources / META-INF中创建了一个orm.xml文件?我在你的问题中没有看到它。