我有以下2个课程。主要类为 Aloscalculation ,该类具有变量 finalOutput ,其中包含某些值。DataSet<Tuple4<String, String, Double, String>> finalOutput
。该值试图插入到postgresql中。变量connectionValues具有json,它具有各种参数,例如username,password,drivername,这些参数是从称为externalmap的哈希图接收的。从Writealos,我能够发送尝试插入Aloscalculation中的行对象。但是我无法发送可变的连接值来设置驱动程序名称,密码,URL和用户名。请建议我该怎么做。相应地计算org_metric_result,org_metric_orgid等值。
我现在以一种新的方式编辑了代码以解决问题。但是现在新问题出现在Writealos方法中,如果不进行匹配,我将返回一个空对象。由于该原因,在数据库插入过程中出现一个异常,提示正在形成Null值,因此无法插入。请谁能解决这个错误?
public class Writealos implements MapFunction<Tuple4<String, String, Double, String>, Row>
{
@Autowired
private Tenantresource outermap;
public Row map(Tuple4<String, String, Double, String> arg0)throws Exception
{
if(arg0.f0.equals(currentKey))
{
Row obj = new Row(7);
String string = RandomStringUtils.randomAlphanumeric(32);
obj.setField(0, string);
obj.setField(1, alos);
obj.setField(2, org_metric_result.toString());
obj.setField(3, Start_Date.toString());
obj.setField(4, End_Date.toString());
obj.setField(5, Execution_Date.toString());
obj.setField(6, org_metric_orgid);
}
return obj;
}
}
public class Aloscalculation
{
@Autowired
private static Tenantresource outermap;
public static void calculateAlos(Fhirresource fhir_resource ) throws Exception
{
String query = "insert into reports (org_metric_id,org_metric_topic, org_metric_result, org_metric_from, org_metric_to, org_metric_executed_on, org_metric_orgid) values (?,?,cast(? as json),cast(? as timestamp),cast(? as timestamp),cast(? as timestamp),?)";
for(String currentKey : outermap.tenantresourcereturn().keySet())
{
JSONObject connection =new JSONObject( outermap.tenantresourcereturn().get(currentKey));
System.out.println(currentKey);
String url=connection.getString("jdbc_url")+":"+connection.getString("port")+"/"+connection.getString("db_name");
System.out.println(url);
finaloutput.map(new Writealos(fhir_resource,currentKey))
.output(JDBCOutputFormat.buildJDBCOutputFormat()
.setDrivername()
.setDBUrl()
.setUsername()
.setPassword()
.setQuery(query)
.finish());
}
}
答案 0 :(得分:0)
您如何通过服务公开public Row map(Tuple4<String, String, Double, String> arg0)
。 Spring提供了一个注释@ ResponseBody
。您需要具有匹配的POJO,spring会负责转换。其次,为什么不打算使用任何ORM工具(Hibernate,Ibatis等),它可以简化CRUD操作。
How does the Spring @ResponseBody annotation work in this RESTful application example?