2017-02-04 2 views
2
public List getAllEmployees() 
{ 
    return sessionFactory.openSession().createSQLQuery("select * from employee order by eid").list(); 
} 

Mitarbeiter Tabelle eine Spalte ipadres hat, ist Typ inet in postgresql.Wie inet in Entitätsklasse im Frühjahr bekommen Hibernate

@Entity 
@Table(name="employee") 
public class Employee { 
    @Id 
    @Column(name="eid") 
    private int eid; 
    private int dept_id; 
    private String name; 
    private String address; 
    private String project; 
    private String password; 
    @Column(name="ipadres") 
    private String ipadres; 
    private double salary; 
    private Date Doj; 

Das ist meine Pojo-Klasse. Ich habe ipadres als Zeichenfolge genommen, aber es gibt mir folgende Ausnahme.

org.hibernate.MappingException: keine Dialect-Mapping für JDBC Typ: 1111

Antwort

0

Ich war mit ähnlichen Problem konfrontiert, wenn ich eine benutzerdefinierte Geld Art zu schaffen hatte.

Die Lösung ist eine eigene Klasse zu erstellen, die die UserType-Schnittstelle implementiert.

Hier ist ein großer Artikel über die Frage: example

In einem nuthshell Sie bei der Umsetzung der folgenden mehods Interesse:

import org.hibernate.usertype.UserType; 

public InetType impelements UserType{ 

public Class<String> returnedClass() { 
    return String.class; 
} 

public int[] sqlTypes() { 
    return new int[] { Types.OTHER }; // as the db type is inet and not directly transmutable to hibernate type. 
} 

public Object nullSafeGet(ResultSet resultSet, String[] names, Object owner) 
     throws HibernateException, SQLException { 
    String value = (String) Hibernate.STRING.nullSafeGet(resultSet, names[0]); 
    return value;   
} 

public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index) 
     throws HibernateException, SQLException { 
    Hibernate.STRING.nullSafeSet(preparedStatement, 
      (value != null) ? value.toString() : null, index); 
} 
} 

Dann in Ihrem Employee-Entität, müssen Sie Typdefinition Anmerkungen hinzufügen :

@Entity 
@Table(name="employee") 
@TypeDefs(value={@TypeDef(name="inetType",typeClass=InetType.class)}) 
public class Employee { 

    @Column(name="ipadres") 
    @Type(type="inetType") 
    private String ipadres; 
+0

Dank bro !!! Ich habe eine ähnliche Lösung zu sehen ist, war auf der Suche nach einem einfachen one..nvm dank einer Tonne @Maciej Kowalski – TheDragonWarrior

+0

froh, dass ich helfen könnte –

Verwandte Themen