PostgreSQL
JDBC驱动程序提供了
org.postgresql.util.HStoreConverter具有to
/ from
String和
byte[]转换功能的实用程序类。您可以使用它来实现自己的JPA 2.1
Converter:
import javax.persistence.AttributeConverter;import javax.persistence.Converter;import java.util.Map;import org.postgresql.util.HStoreConverter;@Converterpublic class MyHStoreConverter implements AttributeConverter<Map<String, String>, String> { @Override public String convertToDatabaseColumn(Map<String, String> attribute) { return HStoreConverter.toString(attribute); } @Override public Map<String, String> convertToEntityAttribute(String dbData) { return HStoreConverter.fromString(dbData); }}然后,将其与
Convert实体中的JPA
注释一起使用:
@Entitypublic class MyEntity { @Convert(converter = MyHStoreConverter.class) private Map<String, String> hstoreAttribute;}这是仅使用JPA标准的实现,因此应与JPA提供者无关。但是,较早之前,Hibernate错误HHH-8804阻止了使用
Converter映射到泛型,但是Hibernate
5.0.0和4.3.11中已解决了该问题。
Map<>



