Frage

Ich versuche derzeit, Joda Time im Ruhezustand beizubehalten Benutzertyp, aber ich erhalte in Eclipse weiterhin die folgende Fehlermeldung.

Error Message

(failed.org.hibernate.MappingException:Typ konnte nicht ermittelt werden für:org.jadira.usertype.dateandtime.jsr310.PersistentLocalDateTime, in der Tabelle:MODEL_OBJECT, für Spalten:[org.hibernate.mapping.Column(MODIFIED_DATE_TIME)])

Meine XML-Datei sieht so aus

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="model" >
    <class name="ModelObject" table="MODEL_OBJECT">
        <id name="id" column="MODEL_ID" >
            <generator class="native"></generator>
    </id>
    <property name="modifiedDateTime"             
            type="org.jadira.usertype.dateandtime.jsr310.PersistentLocalDateTime"
            column="MODIFIED_DATE_TIME"/>
        <property name="creationDateTime"
            type="org.jadira.usertype.dateandtime.jsr310.PersistentLocalDateTime"
            column="CREATION_DATE_TIME"/>
    </class>
</hibernate-mapping>`

und meine Java-Datei sieht so aus

package model;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import org.joda.time.LocalDateTime;

public abstract class ModelObject  {

private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);

private long id;
private LocalDateTime  modifiedDateTime = new LocalDateTime ();
private LocalDateTime  creationDateTime = new LocalDateTime ();

public Long getId(){
    return id;
}

public void setId(Long id){
    firePropertyChange("id", this.id, this.id = id);
}

public LocalDateTime  getModifiedDateTime(){
    return modifiedDateTime;
}

public void setModifiedDateTime(LocalDateTime  modifiedDateTime) {
    firePropertyChange("modifiedDateTime", 
                this.modifiedDateTime, 
                this.modifiedDateTime = modifiedDateTime);
}

public LocalDateTime  getCreationDateTime(){
    return creationDateTime;
}

public void setCreationDateTime(LocalDateTime  creationDateTime){
    firePropertyChange("creationDateTime", 
                this.creationDateTime, 
                this.creationDateTime = creationDateTime);
}

public void addPropertyChangeSupportListener(PropertyChangeListener listener){
    changeSupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener){
    changeSupport.removePropertyChangeListener(listener);
}

public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener){
    changeSupport.addPropertyChangeListener(propertyName, listener);
}

public void removePropertyChangeListener(String propertyName, 
                                             PropertyChangeListener listener){
    changeSupport.addPropertyChangeListener(propertyName, listener);
}

protected void firePropertyChange(String propertyName, Object oldValue, Object newValue){
    changeSupport.firePropertyChange(propertyName, oldValue, newValue);
}

}

Ich habe usertype.spi-3.0.0.jar und usertype.core.3.0.0.CR3.jar zu meinem Klassenpfad hinzugefügt.

Ich habe keine Ahnung, was hier vor sich geht, daher wäre ich für Hilfe sehr dankbar

War es hilfreich?

Lösung

Fügen Sie eine separate Datei mit benutzerdefinierten HBM-Typen hinzu
CustomTypes.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.softcomputer.softlab.business.core">
   <typedef name="localJodaDate"
      class="org.jadira.usertype.dateandtime.jsr310.PersistentLocalDateTime" />
</hibernate-mapping>  

Fügen Sie diese Datei zu Ihrem Mapping hinzu

  <mapping resource="CustomTypes.hbm.xml" />

Andere Tipps

Das Problem ist, dass Sie die JSR-310-Typen (für Dhroaten) anstelle der JODA-Zeitarten verwenden.

org.jadira.Usertype.dateandime.jsr310.persistentlocaldateTime an org.jadira.uSertype.dateAndTime.joda.persistentlocaldateTime und Ihr Problem sollte gelöst werden.

betrachtet chris

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top