本文介绍了在postgresql中以范围类型持久化Java对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Postgres表,其中有几列类型为 numrange
和 int4range
的列。
I have a Postgres table with several columns of type numrange
and int4range
.
我想从Java中持久存储数据。目前,我在这样的Java类中有此数据:
I want to persist data in it from Java. Currently I have this data in a Java class like this:
class Range<T> {
private Integer minimum;
private Integer maximum;
// more code...
}
我正在使用JDBC驱动程序和 java.sql。*
,我尝试了几项,但均未成功:
I'm using the JDBC Driver and the java.sql.*
and I've tried several things, without success:
pstmt.setObject(7, myObject.price()); // price() returns a Range object
这给了我以下错误:
Can't infer the SQL type to use for an instance of com.scmspain.admatching.domain.Range. Use setObject() with an explicit Types value to specify the type to use.
我无法指定类型,因为 java中不存在该类型。 sql.Types
类。
I cannot specify the type, since it does not exist in the java.sql.Types
class.
推荐答案
可以使用完成类型。OTHER
。
pstmt.setObject(7, myObject.price(), Types.OTHER);
还必须包含 toString()$ c $我的
Range
类中的c>方法:
It was also required to include a toString()
method in my Range
class:
class Range<T> {
// more code...
public String toString() {
return String.format("[%d, %d]", minimum, maximum);
}
}
这篇关于在postgresql中以范围类型持久化Java对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!