我已经使用JPA 2.1 Converter
将PostgreSQL转换hstore
为Map<String, String>
。但是我没有找到针对EclipseLink和Hibernate等不同JPA提供程序的通用方法。因此,我需要为每个JPA提供程序编写不同的Converter。
以下是为EclipseLink和Hibernate使用不同转换器的示例。 https://github.com/phstudy/jpa-
converter-sample
不同的JPA提供者是否有通用的方法?
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;
@Converter
public 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
注释一起使用:
@Entity
public 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<>
我使用JPA2.1将PostgreSQL转换为。但是对于不同的JPA提供者,比如EclipseLink和Hibernate,我没有找到一个通用的方法。所以我需要为每个JPA提供者编写不同的转换器。 下面的示例为EclipseLink和Hibernate使用不同的转换器。https://github.com/phstudy/jpa-converter-sample 对于不同的JPA提供者,是否有一种
除了字符串解析之外,将字符串格式的日期“YYYY-MM”转换为Java中的日期对象的最佳方法是什么。 我试过的在下面。 然后提取month和year来创建Date对象。
问题内容: 这是当前使用的代码。 问题答案: 依赖DOM Level3加载/保存:
问题内容: 是否有更可读的方法来检查是否存在嵌入字典的键而无需独立检查每个级别? 可以说我需要在埋藏的对象中获取此值(示例取自Wikidata): 为了确保不会以运行时错误结束,有必要检查每个级别,如下所示: 我可以想到的另一种解决方法是将其包装到一个结构中,对于这样一个简单的任务,我也觉得很尴尬。 我正在寻找类似的东西: 如果所有级别都存在,则返回。 问题答案: 简而言之,使用Python,您必
问题内容: 我在Java方面苦苦挣扎,但无法将Java .wav转换为.mp3转换器的有效示例。该转换器将在Java applet中使用,因此它应仅依赖以纯Java编写的库,而无需底层C代码调用。 谁能提供一个完整的示例? 谢谢 问题答案: 阅读您的wave文件@ http://java.sun.com/javase/technologies/desktop/media/jmf/ 并编码为mp3
问题内容: 有没有比这更好,更优雅(和/或更快)的方式 …? 编辑 :因为我不能选择两个答案,所以我要使用正则表达式,因为a)很优雅,并且b)说“ Jon Skeet解决了问题”是一种重言式,因为Jon Skeet自己就是所有问题的解决方案。 问题答案: 我不认为Java有任何内置功能可以更快,更可靠地完成此操作,但前提是您稍后希望使用Double.valueOf(或类似功能)对其进行解析。 我会