Type not supported and MappedSuperClass?
korsbecker Nov 24, 2011 1:15 AMHi
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;
}