我正在学习如何使用SQLData,并且在投射回我的对象时遇到问题。
我的Oracle类型看起来像这样:
CREATE OR REPLACE TYPE activities_t AS OBJECT
(
list activity_list_t;
);
CREATE OR REPLACE TYPE activity_list_t AS TABLE OF activity_t;
CREATE OR REPLACE TYPE activity_t AS OBJECT
(
startDate DATE;
endDate DATE;
);
我的Java看起来像这样:
public class Activities implements SQLData {
private String sqlType = "ACTIVITIES_T";
List<Activity> list;
// must have default ctor!
public Activities() {
}
public String getSQLTypeName() throws SQLException
{
return sqlType;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public void readSQL(SQLInput stream, String typeName) throws SQLException
{
Array a = stream.readArray();
// :(
}
public void writeSQL(SQLOutput stream) throws SQLException
{
// stream.writeArray(this.list);
}
}
我已经在readSQL中尝试了几件事,但是没有取得太大的成功-我缺少什么?
我正在使用JDBC调用一个OUT参数为“ activities_t”的PLSQL存储过程:
Map map = connection.getTypeMap();
map.put("ACTIVITIES_T", Class.forName("Activities"));
connection.setTypeMap(map);
callableStatement = connection.prepareCall("{call GET_ACTIVITIES(?)}");
callableStatement.execute();
谢谢!史蒂夫
(以上大部分内容都来自内存,因为代码正在起作用…)
您需要为类型ACTIVITY_T
以及类型添加一个类型映射ACTIVITIES_T
。从您的问题尚不清楚您是否已经完成此操作。
假设您已完成此操作,并创建了一个Activity
同时实现的类SQLData
。完成此操作后,以下内容就足以阅读其中的活动列表Activities
:
public void readSQL(SQLInput stream, String typeName) throws SQLException {
Array array = stream.readArray();
this.list = new ArrayList<Activity>();
for (Object obj : (Object[])array.getArray()) {
list.add((Activity)obj);
}
}
对API控制器的远程调用(通过RestTemboard)(从一侧返回已知对象的List([]),从远程侧返回未知类型的对象)返回
现在假设我有许多动物子类,我将连续得到许多“else if...” 我的问题是:有没有办法避免这种情况?我已经尝试使用一个接口(动物->接口、狗、猫等实现动物),但是在我的项目中,数组必须是可克隆的,如果动物是一个接口,你就不能克隆一个数组“动物[]ArrayOfAnimals”(该数组中的对象将不会被克隆)
在通用堆栈的实现中,使用了以下习惯用法,并且没有任何问题 但是,当我尝试以下操作时,它会导致ClassCastException 这个你怎么解释?
问题内容: 我已经搜索过了,但是不幸的是,我没有得到正确的答案。 测试一下: 但是有一个错误抛出: 如何解决呢? 更新 我需要此方法,因为有时代码中的类型太长: 我希望致电: 最后 创建这样的方法似乎是不可能的,非常感谢大家! 问题答案: 您可以调用而不用担心自己实现它,但是正如aioobe所说,由于类型擦除,您不能创建通用类型的数组。如果需要返回该类型,则需要自己创建一个类型化实例并将其传递。
我希望将一个< code>int数组转换为一个< code>double数组。 所以,当我有 我想使用,比如说把它作为参数传递给一个方法。 最好的方法是什么? 演员阵容 不工作。 我可以迭代通过: 有没有更好的方法来做到这一点? <代码>系统。arraycopy不起作用——不适用于两种不同基元类型的数组。 注意:在Java和其他一些讨论中,我们看到了将对象转换为数组。 蒂亚。
我的javascript代码中有一个字符串列表,我通过JQuery将其发送到基于REST的服务,如下所示: 如您所见,我将javascript数组转换为JSON数组。 现在,在服务器端,我使用Spring MVC和Jackson来接收和解析输入JSON: 但我总是得到: 我尝试从JSON对象中删除引号,还尝试使用,但没有成功。 根据OQJF建议进行更新: 我修改了我的帖子请求如下: 现在调用了我的