嗨,我使用 springjdbc 在 oracle 中调用存储过程。我有存储过程和我的输出属性自定义 udt 对象。在我的 java 代码中,我想将此类型获取为 java 类,为此我创建了自定义类并实现 SQLData 及其但我的问题是,如果数据库中的 udt 属性顺序发生变化 就像第一种情况一样,城市是我在 udt 中的第 3 个参数,状态是第 4 个参数。我的 java 类的顺序相同,但我只切换参数顺序,当时值设置错误(城市值到州,州值到城市集) 有没有办法控制这种顺序困惑。
> CREATE TYPE ADDRESS (
> NUM INTEGER, (1)
> STREET VARCHAR(40),(2)
> CITY VARCHAR(40),(3)
> STATE VARCHAR(2),(4)
>
ZIP CHAR(5) (5) );
public class Address implements SQLData {
public int num;
public String street;
public String city;
public String state;
public String zip;
private String sql_type;
public String getSQLTypeName() {
return sql_type;
}
public void readSQL(SQLInput stream, String type)
throws SQLException {
sql_type = type;
num = stream.readInt();
street = stream.readString();
city = stream.readString();
state = stream.readString();
zip = stream.readString();
}
public void writeSQL(SQLOutput stream)
throws SQLException {
stream.writeInt(num);
stream.writeString(street);
stream.writeString(city);
stream.writeString(state);
stream.writeString(zip);
}
}
最佳答案
不是直接,而是通过ORAData,ORADataFactory有一种方法。通过ORAData Create方法,我们可以访问类型元数据信息来帮助structdescriptor.getMetaData()函数。然后我们可以与值结合
public ORAData create(Datum datum, int i) throws SQLException
StructDescriptor sd = StructDescriptor.createDescriptor("TYPENAME", c);
int ColumnCount = sd.getMetaData().getColumnCount();
for (int columCounter = 1; columCounter <= ColumnCount; columCounter++) {
String ColumnName = sd.getMetaData().getColumnName(columCounter);
关于java - JDBC 自定义类型映射顺序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803464/