java.sql.SQLData - Oracle object mapping problem
I am using java.sql.SQLData interface to map my java objects to Oracle database types.

For example, I have an object type Person in Oracle DB defined as:

    CREATE OR REPLACE TYPE PERSON AS OBJECT
    (
          PERSON_ID NUMBER,
          PERSON_NAME VARCHAR2(100)
    );

Corresponding Java type is:

    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);
     }
    }

This works fine currently and populates Person Objects from database type.

Now, I have a another type and it's corresponding collection as follows:

 

    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;

I have to create a new entry in type PERSON with this collection as follows:

     
    CREATE OR REPLACE TYPE PERSON AS OBJECT
    (
          PERSON_ID NUMBER,
          PERSON_NAME VARCHAR2(100),
          SUBJECT_LIST TYPE SUBJECT_LIST
    );

To make this change I have to change my java Person class.  I tried adding java.sql.Array parameter but it is not working.  

Can you please help here to map the new PERSON Object type to Java type?

Thanks in advance.

--Siddharth

        
java.sql.SQLData - Oracle object mapping problem
===

I am using java.sql.SQLData interface to map my java objects to Oracle database types.

For example, I have an object type Person in Oracle DB defined as:

    CREATE OR REPLACE TYPE PERSON AS OBJECT
    (
          PERSON_ID NUMBER,
          PERSON_NAME VARCHAR2(100)
    );

Corresponding Java type is:

    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);
     }
    }

This works fine currently and populates Person Objects from database type.

Now, I have a another type and it's corresponding collection as follows:

 

    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;

I have to create a new entry in type PERSON with this collection as follows:

     
    CREATE OR REPLACE TYPE PERSON AS OBJECT
    (
          PERSON_ID NUMBER,
          PERSON_NAME VARCHAR2(100),
          SUBJECT_LIST TYPE SUBJECT_LIST
    );

To make this change I have to change my java Person class.  I tried adding java.sql.Array parameter but it is not working.  

Can you please help here to map the new PERSON Object type to Java type?

Thanks in advance.

--Siddharth

        