我想在Hibernate ORM中使用Postgresql网络数据类型的mac地址(macaddr)。我怎么能将macaddr类型映射到实体类属性?这样做的最佳方法是什么?我从未在Hibernate
中使用非标准SQL类型THX
答案 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。