gpt4 book ai didi

java - 如何使用hibernate在spring的实体类中获取inet

转载 作者:行者123 更新时间:2023-11-29 12:25:21 27 4
gpt4 key购买 nike

public List getAllEmployees() 
{
return sessionFactory.openSession().createSQLQuery("select * from employee order by eid").list();
}

employee 表有一列ipadres,类型是postgresql 中的inet

@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;

这是我的 pojo 类(class)。我已将 ipadres 作为字符串,但它给了我以下异常。

org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

最佳答案

当我必须创建自定义货币类型时,我遇到了类似的问题。

解决方案是创建您自己的实现UserType 接口(interface)的类。

这是一篇关于此事的精彩文章:example

简而言之,您有兴趣实现以下方法:

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);
}
}

然后在你的Employee实体中,你需要添加类型定义注解:

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

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

关于java - 如何使用hibernate在spring的实体类中获取inet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com