Hibernate中的PostgreSQL网络类型

时间:2014-02-05 20:59:27

标签: java hibernate postgresql

我想在Hibernate ORM中使用Postgresql网络数据类型的mac地址(macaddr)。我怎么能将macaddr类型映射到实体类属性?这样做的最佳方法是什么?我从未在Hibernate

中使用非标准SQL类型

THX

3 个答案:

答案 0 :(得分:2)

Mac地址是一个字符串。如果它是mac地址与其用户之间的@OneToOne关系,那么你不必用简单的字符串创建一个实体类,只需将它作为一个字段包含在任何需要它的实体上,如下所示:

private String macAddress;

如果多个实体使用相同的mac地址并且您想重用该值(normalize),那么您可以创建一个这样的实体:

package com.acme.model;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class MacAddress implements Serializable {

    private static final long serialVersionUID = 1l;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String value;

    public Long getId() {
        return id;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

答案 1 :(得分:1)

我只是解决了这样的问题,所以我成功插入并从DB postgresql 9获取行。完全解释的解决方案在此链接network postgres types on hibernate

答案 2 :(得分:0)

由于mac-address永远不会被完全验证,因此Java中没有Standard-Type。你可以使用

@ColumnTransformer(read="CAST(mac AS varchar)", write="CAST(? AS macaddr)") String 

而是将其读/写为String。