Мапинг на кастомные типы в SQL и Java

203
11 февраля 2018, 00:07

Имеется довольно простой класс:

public class User implements SQLData {
    public String name;
    public Integer age;
    public boolean isWorks;
    public Date birthdate;
    private String sql_type;
    @Override
    public String getSQLTypeName() throws SQLException {
        return sql_type;
    }
    @Override
    public void readSQL(SQLInput stream, String typeName) throws SQLException {
        sql_type = typeName;
        name = stream.readString();
        age = stream.readInt();
        isWorks = stream.readBoolean();
        birthdate = stream.readDate();
    }
    @Override
    public void writeSQL(SQLOutput stream) throws SQLException {
        stream.writeString(name);
        stream.writeInt(age);
        stream.writeBoolean(isWorks);
        stream.writeDate(birthdate);    
    }
}

Предполагается, что для установления соответствия с его аналогом в БД, он будет замаплен на SQL тип, который есть на Oracle:

CREATE TYPE USER
(
 NAME VARCHAR(40),
 AGE INTEGER,
 ISWORKS BOOLEAN,
 BIRTHDATE DATE,
);

В проекте используется Hibernate, но не полноценно, а просто в виде JPA провайдера. Никаких Connection и Session в явном виде.

В соответствии с доками всё, что нужно, чтобы получать из БД объект, который легко приводится к нашему User, это сделать:

ResultSet rs = stmt.executeQuery("...");
rs.next();
User user = (User) rs.getObject("USER");

Это надо как-то руками их замапить, например так:

java.util.Map map = con.getTypeMap(); //con is object of active connection class
map.put("USERSCHEMA.USER", Class.forName("User"));
con.setTypeMap(map);

Но, повторюсь, так как Connection не видно, то и не ясно как мапить. Кто-нибудь сталкивался с подобным? Можете предложить альтернативные способы, как сделать так, чтобы из БД с простым приведением можно было сразу получать объекты?

READ ALSO
Тестирование void методов с помощью JUnit

Тестирование void методов с помощью JUnit

Есть класс , который выполняет деление столбиком и результат отображает графически выводом в консольКак протестировать такой метод?

225
Заполнение массива из файла

Заполнение массива из файла

Не могу понять как

227
java apk Ошибка NullPointerException

java apk Ошибка NullPointerException

при запуске приложения получаю ошибку:

244
Функции кнопки в Sketchware

Функции кнопки в Sketchware

Как сделать в Sketchware так что бы кнопка показывала ,а при повторном скрывала какой-либо контент?

317