- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在开发使用 Spring Data 的项目。我想使用 @CreatedDate
注释来填充 creationTime
字段,而不是使用带有 @PreUpdate
或 @PrePersist
注释的方法(这样做可以完美地工作)。当我使用 @CreatedDate
执行此操作时,它只会将此字段留空。我使用 postgresql 数据库。 Documentation不是很有帮助。
您知道我该如何解决吗?谢谢!
import org.springframework.data.annotation.CreatedDate;
@Entity
@Table(name = "software")
public class Software implements Serializable {
// ...
@Column(name = "creation_time")
@CreatedDate
private Date creationTime;
//...
}
我的applicationContext
:
<jpa:repositories base-package="path.to.dao"/>
<context:component-scan base-package="path.to.dao"/>
<context:property-placeholder location="classpath:application.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="path.to.bean"/>
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="jpaAdapter"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.ejb.naming_strategy">${hibernate.ejb.naming_strategy}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
最佳答案
我可能遇到过类似的情况,我希望 Spring Data JPA @CreatedDate
注释能够工作,但不需要他们文档中另外描述的用户级审计。
为了使基于注释的审计工作,我不得不向我的项目添加一个实现 org.springframework.data.domain.AuditorAware
的类。这很奇怪,因为您实际上似乎没有使用您将要实现的 getCurrentAuditor()
方法返回的值;我的只是返回 null
。
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
然后我需要在 applicationContext
的条目中引用我的“空对象”AuditorAware
实现来激活 JPA 审计。我必须确保在指定 jpa:repositories
的行之前执行此操作。这看起来像:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
我还必须添加一个 orm.xml
文件,并且需要将它作为我的 entityManagerFactory
bean 的属性正式引用,如下所示:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
确保此 META-INF/orm.xml
条目与您的编译输出一起存储(我的位于 WEB-INF/classes
下的我的 WAR 中。
那个 orm.xml
文件,作为记录,包含一些样板,可以在 this related question 的答案中找到。 .
当我得到这个工作时,这是相当多的工作。您可能更喜欢以前的工作解决方案!
关于java - Spring Data @CreatedDate 注释对我不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483841/
如何覆盖具有@CreatedDate的审核字段。如果未设置审核字段的值,则应应用@CreatedDate,否则应采用已设置的值。 Spring JPA 中是否有需要启用的功能。 最佳答案 这并不优雅,
创建记录时,需要将其日期插入时区偏移量。如何更改此注释中的默认时间?如果重要的话,我会使用 PostgreSQL。 我的默认时间是 UTC + 2,但我只需要 utc,没有时区。例如。创建新用户时,插
我的 spring-data-jpa 后端有一个用大量测试数据填充(测试)数据库的类。该类使用 spring 数据存储库来创建实体。我所有的实体都有一个用 @CreatedData 注释的字段和模型类
我正在处理 MongoDB 集合。我有一组集合,每个集合都有很多文档。我必须编写一个程序来删除所有“createdDate”从当前日期起超过一个月的文档。 我一直在寻找比当前日期早一个月的日期,以便将
我是 spring 的新手,我对 @CreatedDate 注释在实体中的工作方式感到困惑。 我进行了谷歌搜索,发现有很多解决方案,但除了一个之外,没有一个对我有用。我很困惑为什么? 这是我第一次尝试
我正在使用 spring r2dbc 和 ReactiveCrudRepository,如何在更新查询中忽略 createdBy 和 CreatedDate。 @Data public class B
我已经在 Spring 应用程序中实现了审计列,当我创建一个新实体时,列被设置,但当我更新实体时,我发现两个 @Createdby 和 @CreatedDate 设置为空,我该如何制作这些创建后列不可
我正在尝试运行一个简单的示例,如下所示,但出现错误。 我正在使用@CreatedDate。但是,当我使用 Rest 端点保存 Student 对象时,它不会创建日期并引发给定的异常。 在我的休息终点,
我正在使用 spring-jpa坚持一个 LocalDateTime created_at与 @CreatedDate . @CreatedDate private LocalDateTime cre
我正在学习 ASP.NET Core MVC,我的模型是 namespace Joukyuu.Models { public class Passage { publi
我有一个返回 Inspections 的模型实例的函数,我想按 CreatedDate 对它进行排序,但是在我编译之后我得到了 cannot use inspections[i].CreatedDat
我正在开发使用 Spring Data 的项目。我想使用 @CreatedDate 注释来填充 creationTime 字段,而不是使用带有 @PreUpdate 或 @PrePersist 注释的
我正在使用 Spring Boot + JPA 编写一个应用程序,使用 Postgres 数据库。我有一个用户实体,我试图在保存和/或修改用户记录时获取时间戳。这是行不通的。正在保存的记录的creat
我正在使用 Spring Mongo Auditing 和 @CreatedDate @CreatedBy 不起作用,但 @LastModifiedDate 和 @LastModifiedBy 工作正
我正在使用 Spring boot 和 spring data couchbase。我在 Movie 中使用 @CreatedDate 和 @LastModifiedDate 注释添加了 create
在处理模型类时,我面临以下警告:-- com.model.products.CategoryModel.setCreatedDate(Date) may expose internal represe
有什么优点和缺点?我们什么时候应该使用它们,什么时候不应该使用它们? 更新 RepositoryFactory 自动生成的更新 SP 中的注释是什么?它与不存在的上述列有什么关系吗? --The [d
我创建了以下实体并使用 h2 对其进行了测试: @Getter public class Topic { @Id private long id; private final
我有以下 JPA 实体: @EntityListeners(AuditingEntityListener.class) @Entity public class EntityWithAuditingD
我有以下 Spring Boot 示例应用程序。疯狂的是,如果我在 SampleApplication bean 上添加 @EnableMongoAuditing 注释,lastModifiedDat
我是一名优秀的程序员,十分优秀!