我想在Hibernate ORM中使用Postgresql網絡數據類型的mac地址(macaddr)。我如何將macaddr類型映射到實體類屬性?這樣做的最好方法是什麼?我從來沒有使用非標準SQL類型在Hibernate中Hibernate中的PostgreSQL網絡類型
THX
我想在Hibernate ORM中使用Postgresql網絡數據類型的mac地址(macaddr)。我如何將macaddr類型映射到實體類屬性?這樣做的最好方法是什麼?我從來沒有使用非標準SQL類型在Hibernate中Hibernate中的PostgreSQL網絡類型
THX
我只是解決了這樣的問題,所以我插入併成功從DB postgresql 9獲取行。完全解釋的解決方案是在這個鏈接network postgres types on hibernate
MAC地址是一個字符串。如果它是Mac地址與其用戶之間的@OneToOne關係,那麼您不必使用簡單的字符串創建實體類,只需將其包含爲任何實體所需的字段即可,如下所示:
private String macAddress;
如果相同的MAC地址被多個實體和要重複使用的值(規範化),那麼你會做這樣的實體:
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;
}
}
因爲MAC地址是永遠不會完全以驗證,Java中沒有Standard-Type。您可以使用
@ColumnTransformer(read="CAST(mac AS varchar)", write="CAST(? AS macaddr)") String
,而不是讀/寫爲String。
您不能將mac轉換爲varchar,因爲它們不是兼容的二進制類型。我想你首先需要創建一個函數,然後使用該函數進行強制轉換。 –
Mac地址不是「一個字符串」。在Postgres中,它是一個擁有自己獨特運算符的自己的數據類型。它用於在表中定義列,而不是創建實體(表) –