Auditing with embedded annotations
acichon89 Dec 7, 2012 7:41 AMThere is no word in documentation how to do that, please somebody tell me how to audit the embedded classes?
I use following example: http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/
Co My code is:
@Entity
@Table(name="projects_project")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="disc_type", discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue("project")
@Audited
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Getter @Setter
private int id;
(...)
@OneToMany(targetEntity=ProjectParameter.class, mappedBy="pk.project", cascade=CascadeType.ALL)
@Getter @Setter
private List<ProjectParameter> projectParameters = new ArrayList<ProjectParameter>();
@Entity
@Table(name="projects_rel_project_parameter")
@Audited
@AssociationOverrides({
@AssociationOverride(name="pk.project", joinColumns=@JoinColumn(name="project_id")),
@AssociationOverride(name="pk.parameter", joinColumns=@JoinColumn(name="parameter_id"))
})
public class ProjectParameter implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
@Getter @Setter
private ProjectParameterPK pk = new ProjectParameterPK();
@Getter @Setter
private double value;
public Project getProject(){
return pk.getProject();
}
public void setProject(Project project){
pk.setProject(project);
}
public Parameter getParameter(){
return pk.getParameter();
}
public void setParameter(Parameter parameter){
pk.setParameter(parameter);
}
public class ProjectParameterPK implements Serializable {
private static final long serialVersionUID = 1L;
@ManyToOne
@Getter @Setter
private Project project;
@ManyToOne
@Getter @Setter
private Parameter parameter;
}
I got exception:
Caused by: org.hibernate.MappingException: Unable to read the mapped by attribute for projectParameters in pl.proedims.project.model.ProjectParameter!
at org.hibernate.envers.configuration.metadata.CollectionMetadataGenerator.getMappedBy(CollectionMetadataGenerator.java:589)
at org.hibernate.envers.configuration.metadata.CollectionMetadataGenerator.addOneToManyAttached(CollectionMetadataGenerator.java:179)
at org.hibernate.envers.configuration.metadata.CollectionMetadataGenerator.addCollection(CollectionMetadataGenerator.java:161)
at org.hibernate.envers.configuration.metadata.AuditMetadataGenerator.addValueInSecondPass(AuditMetadataGenerator.java:223)
at org.hibernate.envers.configuration.metadata.AuditMetadataGenerator.addValue(AuditMetadataGenerator.java:245)
at org.hibernate.envers.configuration.metadata.AuditMetadataGenerator.addProperties(AuditMetadataGenerator.java:258)
at org.hibernate.envers.configuration.metadata.AuditMetadataGenerator.generateSecondPass(AuditMetadataGenerator.java:519)
at org.hibernate.envers.configuration.EntitiesConfigurator.configure(EntitiesConfigurator.java:114)
at org.hibernate.envers.configuration.AuditConfiguration.<init>(AuditConfiguration.java:113)
at org.hibernate.envers.configuration.AuditConfiguration.getFor(AuditConfiguration.java:165)
at org.hibernate.envers.event.EnversIntegrator.integrate(EnversIntegrator.java:64)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:301)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1788)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:189)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:350)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:335)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 36 more