Я использую интерфейс java.sql.SQLData для сопоставления моих объектов java с типами баз данных Oracle.
Например, у меня есть тип объекта Person в БД Oracle, определенный как:
CREATE OR REPLACE TYPE PERSON AS OBJECT
(
PERSON_ID NUMBER,
PERSON_NAME VARCHAR2(100)
);
Соответствующий тип Java:
public class Person implements SQLData {
private String sql_type = "PERSON";
private int personId;
private String personName;
public int getPersonId() {
return personId;
}
public void setPersonId(int personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public void readSQL(SQLInput stream, String typeName) throws SQLException
{
this.sql_type=typeName;
this.personId = stream.readLong();
this.personName = stream.readString();
}
public void writeSQL(SQLOutput stream) throws SQLException
{
stream.writeLong(this.personId);
stream.writeString(this.personName);
}
}
В настоящее время он работает нормально и заполняет объекты Person из типа базы данных.
Теперь у меня есть другой тип и соответствующая коллекция следующим образом:
CREATE OR REPLACE TYPE SUBJECT AS OBJECT
(
SUBJECT_ID NUMBER,
SUBJECT_NAME VARCHAR2(100)
);
-- Corresponding List
CREATE OR REPLACE TYPE SUBJECT_LIST IS TABLE OF SUBJECT;
Мне нужно создать новую запись в типе PERSON с этой коллекцией следующим образом:
CREATE OR REPLACE TYPE PERSON AS OBJECT
(
PERSON_ID NUMBER,
PERSON_NAME VARCHAR2(100),
SUBJECT_LIST TYPE SUBJECT_LIST
);
Чтобы внести это изменение, я должен изменить свой класс Person java.Я попытался добавить параметр java.sql.Array, но он не работает.
Не могли бы вы помочь здесь, чтобы сопоставить новый тип объекта ЛИЦО с типом Java?
Заранее спасибо.
- Сиддхарт