本文介绍了在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() 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对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 09:01