[SPRING] Spring Data @CreatedDate 주석이 작동하지 않습니다.
SPRINGSpring Data @CreatedDate 주석이 작동하지 않습니다.
저는 Spring Data를 사용하는 프로젝트에서 일하고 있습니다. 대신 @PreUpdate 또는 @PrePersist 주석을 사용하여 @CreatedDate 주석을 사용하여 creationTime 필드를 채우고 싶습니다 (완벽하게 작동하는 방식으로). @CreatedDate를 사용하여이 작업을 수행하면이 필드가 공백으로 남습니다. postgresql 데이터베이스를 사용합니다. 문서화는별로 도움이되지 않습니다.
내가 어떻게 고칠 수 있니? 고맙습니다!
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>
해결법
-
==============================
1.스프링 데이터 JPA @CreatedDate 주석을 사용하기를 원했던 유사한 상황에 있었을 수도 있지만 문서에서 다르게 설명 된 사용자 레벨 감사는 필요하지 않았습니다.
스프링 데이터 JPA @CreatedDate 주석을 사용하기를 원했던 유사한 상황에 있었을 수도 있지만 문서에서 다르게 설명 된 사용자 레벨 감사는 필요하지 않았습니다.
어노테이션 기반 감사가 작동하도록하려면, 그럼에도 불구하고 org.springframework.data.domain.AuditorAware를 구현 한 클래스를 프로젝트에 추가해야했습니다. 구현할 getCurrentAuditor () 메소드에서 반환 된 값을 사용하는 것처럼 보이지 않기 때문에 이것은 이상합니다. 내 방금 null을 반환합니다.
public class NullAuditorBean implements AuditorAware { @Override public Object getCurrentAuditor() { return null; } }
그런 다음 JPA 감사를 활성화하기 위해 내 applicationContext의 항목에서 "null 객체"AuditorAware 구현을 참조해야했습니다. 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 항목이 컴파일 출력과 함께 저장되어 있는지 확인하십시오 (내 WAR는 WEB-INF / classes에 있습니다).
레코드에 대한 orm.xml 파일에는이 관련 질문에 대한 답변에서 찾을 수있는 일부 상용구가 포함되어 있습니다.
이 일을 할 때 상당한 양의 일이있었습니다. 이전 작업 솔루션을 선호 할 수도 있습니다!
-
==============================
2.이 질문은 꽤 오래되었지만 여전히 관련이 있습니다. 나에게있어서 중요한 것은 문서에서
이 질문은 꽤 오래되었지만 여전히 관련이 있습니다. 나에게있어서 중요한 것은 문서에서
예 :
@Configuration @EnableMongoAuditing class Config { /** * Optional, depending on your needs */ @Bean public AuditorAware<AuditableUser> myAuditorProvider() { return new AuditorAwareImpl(); } }
또는 XML에서 :
<mongo:auditing/>
from https://stackoverflow.com/questions/20483841/spring-data-createddate-annotation-doesnt-work-for-me by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Bean 선언의 ref 대 idref 속성 (0) | 2019.02.17 |
---|---|
[SPRING] Spring MVC에서 동일한 @RequestMapping에있는 매개 변수에 대해 다른 값을 어떻게 매핑합니까? (0) | 2019.02.17 |
[SPRING] 추상 클래스의 주석을 상속합니까? (0) | 2019.02.17 |
[SPRING] Spring MVC에서 컨트롤러와 액션 메소드를 기반으로 URL을 생성하려면 어떻게해야합니까? (0) | 2019.02.17 |
[SPRING] Spring 요청 범위 빈 (0) | 2019.02.17 |