Hi
I'm a newbie so please bare with me!
I have this class hierarchy: AbstractEntity --> AbstractNavn --> Navn
I would like to use Envers but I keep getting this error:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (GenerateDBSchema) on project MDDExample: An Ant BuildException has occured: org.hibernate.MappingException: Type not supported for auditing: org.hibernate.type.StringType, on entity dk.ttt.cpp.model.navn.Navn, property 'slaegtsnavn'. -> [Help 1]
I have a hunch that this has something to do with MappedSuperClass but I'm not sure
Any help would be very much appreciated
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Classes: ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- package dk.team.mddexample.model;
import java.io.Serializable; import java.util.UUID;
import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; import javax.persistence.PreUpdate; import javax.persistence.SequenceGenerator;
import dk.team.foundation.bean.mdsd.runtime.RuntimeMetaClazz; import org.hibernate.envers.Audited; import org.hibernate.envers.NotAudited; import org.joda.time.DateTime;
@MappedSuperclass public class AbstractEntity implements Serializable { private static final long serialVersionUID = 940657427464035366L; @Id @SequenceGenerator(name = "cpp_GEN", sequenceName = "cpp_ID_SEQ") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "cpp_GEN") @NotAudited private Long id; @Basic @Column(unique = true, updatable = false, length = 36, columnDefinition = "char(36)") @NotAudited private String uuid; @Column(updatable = false) @org.hibernate.annotations.Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime") @Audited private DateTime created; @org.hibernate.annotations.Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime") @Audited private DateTime lastUpdated;
public AbstractEntity() { super(); uuid = UUID.randomUUID().toString(); created = new DateTime(); }
public Long getId() { return id; }
public String getUuid() { return uuid; }
public void setUuid(String newUuid) { this.uuid = newUuid; }
public DateTime getLastUpdated() { return lastUpdated; }
public DateTime getCreated() { return created; }
@Override public int hashCode() { return uuid == null ? 0 : uuid.hashCode(); }
@PreUpdate protected void onUpdate() { lastUpdated = new DateTime(); }
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof AbstractEntity)) return false; final AbstractEntity other = (AbstractEntity) obj; if (uuid == null) { if (other.uuid != null) return false; } else if (!uuid.equals(other.uuid)) return false; return true; }
public String toString() { if (id != null) { return this.getClass().getName() + " with id: '" + id + "' uuid: '" + uuid + "'"; } return this.getClass().getName() + " with id: 'transient entity' " + " uuid: '" + uuid + "'"; } }
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package dk.ttt.cpp.model.navn;
import org.hibernate.envers.Audited; import org.hibernate.envers.NotAudited;
@javax.persistence.MappedSuperclass abstract public class AbstractNavn extends dk.team.mddexample.model.AbstractEntity { private static final long serialVersionUID = 753086060L;
/** * No documentation<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic @javax.persistence.Column(name = "adresseringsnavn", nullable = false) @NotAudited private String adresseringsnavn;
/** * No documentation<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic @javax.persistence.Column(name = "efternavn", nullable = false) @NotAudited private String efternavn;
/** * No documentation<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic @javax.persistence.Column(name = "fornavn", nullable = false) @NotAudited private String fornavn;
/** * Anvendes kun ved dødfødsler.<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic(optional = true) @javax.persistence.Column(name = "kaldenavn") @NotAudited private String kaldenavn;
/** * No documentation<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic(optional = true) @javax.persistence.Column(name = "mellemnavn") @NotAudited private String mellemnavn;
/** * ??<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Embedded @javax.persistence.AttributeOverrides({@javax.persistence.AttributeOverride(name = "dato",column = @javax.persistence.Column(nullable = false,name = "navnGyldigFra_dato") ) , @javax.persistence.AttributeOverride(name = "usikker",column = @javax.persistence.Column(nullable = false,name = "navnGyldigFra_usikker") ) }) @NotAudited private dk.ttt.cpp.model.util.DatoVurderet navnGyldigFra;
/** * No documentation<p/> * Defined in AbstractNavn<p/> */ @javax.persistence.Basic(optional = true) @javax.persistence.Column(name = "slaegtsnavn") @Audited private String slaegtsnavn;
public String getAdresseringsnavn() { return adresseringsnavn; }
public void setAdresseringsnavn(String parameter) { this.adresseringsnavn = parameter; }
public String getEfternavn() { return efternavn; }
public void setEfternavn(String parameter) { this.efternavn = parameter; }
public String getFornavn() { return fornavn; }
public void setFornavn(String parameter) { this.fornavn = parameter; }
/** * Anvendes kun ved dødfødsler. */ public String getKaldenavn() { return kaldenavn; }
/** * Anvendes kun ved dødfødsler. */ public void setKaldenavn(String parameter) { this.kaldenavn = parameter; }
public String getMellemnavn() { return mellemnavn; }
public void setMellemnavn(String parameter) { this.mellemnavn = parameter; }
/** * ?? */ public dk.ttt.cpp.model.util.DatoVurderet getNavnGyldigFra() { return navnGyldigFra; }
/** * ?? */ public void setNavnGyldigFra(dk.ttt.cpp.model.util.DatoVurderet parameter) { this.navnGyldigFra = parameter; }
public String getSlaegtsnavn() { return slaegtsnavn; }
public void setSlaegtsnavn(String parameter) { this.slaegtsnavn = parameter; }
/** * Fluent interface sugar<p/> * <p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withAdresseringsnavn( String adresseringsnavn) { setAdresseringsnavn(adresseringsnavn);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * <p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withEfternavn(String efternavn) { setEfternavn(efternavn);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * <p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withFornavn(String fornavn) { setFornavn(fornavn);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * - Anvendes kun ved dødfødsler.<p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withKaldenavn(String kaldenavn) { setKaldenavn(kaldenavn);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * <p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withMellemnavn(String mellemnavn) { setMellemnavn(mellemnavn);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * - ??<p/> * Defined in AbstractNavn<p/> * Property type hierarchy: * <ul> * <li><b>DatoVurderet</b></li> * </ul> * <p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withNavnGyldigFra( dk.ttt.cpp.model.util.DatoVurderet navnGyldigFra) { setNavnGyldigFra(navnGyldigFra);
return (dk.ttt.cpp.model.navn.Navn) this; }
/** * Fluent interface sugar<p/> * <p/> * Defined in AbstractNavn<p/> * <p/> * <u>Required properties:</u> <b>adresseringsnavn</b>, <b>efternavn</b>, <b>fornavn</b>, <b>navnGyldigFra</b> */ public dk.ttt.cpp.model.navn.Navn withSlaegtsnavn(String slaegtsnavn) { setSlaegtsnavn(slaegtsnavn);
return (dk.ttt.cpp.model.navn.Navn) this; } } --------------------------------------------------------------------------------------------------------------------------------------------------------------------- package dk.ttt.cpp.model.navn;
import org.hibernate.envers.Audited;
@javax.persistence.Entity @javax.persistence.Table(name = "Navn") @Audited public class Navn extends dk.ttt.cpp.model.navn.AbstractNavn { private static final long serialVersionUID = 1304719273L;
}
|