2 Replies Latest reply on Dec 6, 2011 3:48 AM by Henrik Korsbæk

    Type not supported and MappedSuperClass?

    Henrik Korsbæk Newbie

      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;

       

      }