L'annotation Spring Data @CreatedDate ne fonctionne pas pour moi
Je suis en train de travailler sur un projet où j'ai utiliser les Données du Printemps. Je voulais remplir creationTime
champ à l'aide de @CreatedDate
annotation au lieu d'utiliser la méthode avec @PreUpdate
ou @PrePersist
annotation (le faisant de cette manière, il fonctionne parfaitement). Quand je le fais avec @CreatedDate
laisse ce champ vide. J'utilise une base de données postgresql. La Documentation n'est pas très utile.
Avez-vous une idée de comment puis-je résoudre ce problème? Merci!!!!
import org.springframework.data.annotation.CreatedDate;
@Entity
@Table(name = "software")
public class Software implements Serializable {
//...
@Column(name = "creation_time")
@CreatedDate
private Date creationTime;
//...
}
Mon 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>
source d'informationauteur alicjab
Vous devez vous connecter pour publier un commentaire.
J'ai peut-être été dans une situation similaire où je voulais le Printemps de Données JPA
@CreatedDate
annotation de travail, mais n'en avait pas besoin pour l'utilisateur au niveau de l'audit qui est par ailleurs décrit dans sa documentation.Pour obtenir l'annotation de l'audit basée sur le travail, j'ai dû néanmoins ajouter une classe à mon projet mis en œuvre
org.springframework.data.domain.AuditorAware
. C'est bizarre, parce qu'on n'a pas vraiment l'air d'utiliser la valeur renvoyée par lagetCurrentAuditor()
méthode que vous serez en œuvre; la mienne ne renvoienull
.J'ai ensuite nécessaire pour faire référence à mon "objet null"
AuditorAware
mise en œuvre dans une entrée dans monapplicationContext
pour activer la JPA de l'audit. Je devais m'assurer que je l'ai fait avant la ligne qui indique lejpa:repositories
. Cela ressemble à quelque chose comme:J'ai également eu à ajouter un
orm.xml
fichier, et devait officiellement de référence comme une propriété de monentityManagerFactory
bean, comme suit:Assurez-vous que ce
META-INF/orm.xml
entrée est stockée avec votre compilation de sortie (le mien est dans ma GUERRE sousWEB-INF/classes
.Que
orm.xml
fichier pour l'enregistrement, contenues réutilisable, qui peut être trouvé dans la réponse à la cette question relative à la.C'était une bonne quantité de travail quand j'ai reçu ce travail. Vous préférerez peut-être votre travail précédente solution!
Cette question est assez ancien, mais toujours d'actualité. Pour moi, la clé, c'est de la documentation
Par exemple:
Ou, dans le format XML: