关于我要构建的Anylogic模型,我有一个具体问题。
我有3张桌子:
我正在尝试编写一个Java代码,将第一个表( connecteddc )中的每个dc连接到每个分配的客户( connectedcustomer ),并多次遍历此过程建立准确的网络我尝试使用几种代码变体,如下所示。
for (int i=0; i<3 ; i++){
dc.get(i).LinktoCustomers.connectTo(Locations.get(selectFirstValue(false, int.class, "SELECT connectedcustomer FROM connections WHERE connectedDC = "+i+";")));
}
此代码仅将1个DC连接到1个客户。此问题发生在代码的“ selectFirstValue”部分。
答案 0 :(得分:0)
数据库查询
您必须使用一种可能性来检索所有相关的数据库条目,而不是像使用selectFirstValue()
那样仅检索第一个。这是这样做的一种选择:
for (int i=0; i<dc.size() ; i++){
List<Tuple> rows = selectFrom(connection)
.where(connection.connecteddc.eq(dc.get(i).dcName))
.list();
for (Tuple row : rows) {
dc.get(i).connectTo(getCustomerByName(row.get(connection.connectedcustomer)));
}
}
提示:AnyLogic为您提供了创建此类查询的助手,您可以在AnyLogic工具栏的“插入数据库查询”下找到该查询。看起来像这样: AnyLogic Database Query Assistant
其他东西
我修改了一些引起我注意的其他内容:
dc.get(i).LinktoCustomers.connectTo(...)
。不必为连接使用特殊变量,只需使用dc.get(i).connectTo(...)
for (int i=0; i<dc.size() ; i++){...}
。这可以在函数getCustomerByName(String name)
中完成,尽管它显然缺少错误处理):
for(Customer c:Customers){
if(c.custName.equals(name)){
return c;
}
}
return null;