¿Puedo usar Spring Data JPA Auditing sin el archivo orm.xml (usando JavaConfig en su lugar)?
Estoy tratando de hacer que Spring Data Auditing funcione en mi proyecto Spring 3.2.8 / Spring Data 1.5 / Hibernate 4.
Según elDocumentos de Spring Data Auditing, He agregado el@CreatedBy
, etc. anotaciones a mis entidades, creadas porAuditorAware
implementación, e instanciado desde dentro de mi JavaConfig. Sin embargo, nunca parece disparar.
Los documentos me parecen un poco confusos. Parece que la entrada JavaConfig reemplaza la entrada xml, pero no estoy seguro.
Actualmente no tengo ningunoorm.xml
archivo en mi solicitud. Para ser completamente honesto, ni siquiera estoy seguro de dónde / cómo configurarlo, o por qué lo necesito. Todas mis entidades están usando anotaciones. Intenté agregar @EntityListeners (AuditingEntityListener.class) a la entidad, pero eso no me ayudó.
Mi administrador de entidad actual se define sin un archivo persistence.xml:
<!-- entity manager -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="jpaVendorAdapter" ref="hibernateJpaVendorAdapter"/>
<property name="packagesToScan" value="com.ia.domain"/>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
<prop key="hibernate.query.substitutions">true '1', false '0'</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
<prop key="hibernate.connection.charSet">UTF-8</prop>
</props>
</property>
</bean>
JavaConfig:
@Configuration
@EnableJpaAuditing
public class AuditConfig {
@Bean
public AuditorAware<User> auditorProvider(){
return new SpringSecurityAuditorAware();
}
}
Entidad:
@EntityListeners({AuditingEntityListener.class})
@Entity
public class User
{
@TableGenerator(name="UUIDGenerator", pkColumnValue="user_id", table="uuid_generator", allocationSize=1)
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="UUIDGenerator")
@Column(name="id")
private Long id;
@NotNull
private String username;
@CreatedDate
@NotNull
@Temporal(TemporalType.TIMESTAMP)
@Column(name="created_date", nullable=false)
private Date createdDate;
@LastModifiedDate
@NotNull
@Temporal(TemporalType.TIMESTAMP)
@Column(name="last_modified_date", nullable=false)
private Date lastModifiedDate;
@CreatedBy
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="created_by")
private User createdBy;
@LastModifiedBy
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="last_modified_by")
private User lastModifiedBy;
private String password;
private Boolean enabled;
...
}
He puesto un punto de quiebre en miSpringSecurityAuditorAware
clase pero nunca está siendo golpeado.
¿Todavía necesito un archivo orm.xml? ¿Cómo / dónde se hace referencia desde EntityManager?