LINUX.ORG.RU

История изменений

Исправление stevejobs, (текущая версия) :

Это было не по ссылке, а из головы. Соответственно, ссылки нет.

Насчет Хиба, в документации не нашел, а например Бартунов им не пользуется и подсказать не может. Наверное надо посмотреть, как запатчить диалект, главное придумать в каком виде ты хочешь это иметь на стороне джавы.

В JDBC можно сделать вот так:

PreparedStatement stm = conn.prepareStatement("insert into mytable (my_daterange_field) values (?::daterange)"); 
stm.setString(1, "[2016-07-03,2016-07-04]");
int i = stm.executeUpdate();

Тот же трюк проканает и с JSON, и в Хибе внутри named native query.

Можно сразу обернуть это в класс:

class Range<T> {
    private Integer minimum;
    private Integer maximum;

    public Range(Integer minimum, Integer maximum) {
      this.minimum = minimum;
      this.maximum = maximum;
    }

    public String toString() {
        return String.format("[%d, %d]", minimum, maximum);
    }
}

И дальше использовать так:

Range range = new Range(1,2);
pstmt.setObject(7, range, Types.OTHER);

Про PGObject я не пробовал, вот тут есть ссылка с примерами, сам разберешься: http://www.programcreek.com/java-api-examples/index.php?api=org.postgresql.ut...

Исходная версия stevejobs, :

Это было не по ссылке, а из головы. Соответственно, ссылки нет.

Насчет Хиба, в документации не нашел, а например Бартунов им не пользуется и подсказать не может. Наверное надо посмотреть, как запатчить диалект, главное придумать в каком виде ты хочешь это иметь на стороне джавы.

В JDBC можно сделать вот так:

PreparedStatement stm = conn.prepareStatement("insert into mytable (my_daterange_field) values (?::daterange)"); 
stm.setString(1, "[2016-07-03,2016-07-04]");
int i = stm.executeUpdate();

Тот же трюк проканает и с JSON, и в Хибе внутри named native query.

Можно сразу обернуть это в класс:

class Range<T> {
    private Integer minimum;
    private Integer maximum;

    public Range(Integer minimum, Integer maximum) {
      this.minimum = minimum;
      this.maximum = maximum;
    }

    public String toString() {
        return String.format("[%d, %d]", minimum, maximum);
    }
}

И дальше использовать так:

Range range = new Range(1,2);
pstmt.setObject(7, range, Types.OTHER);