OpenERP Java API CreateObject Error
Question
I get an error for following code. Object is hr.attendance. Can some one please guide me?
public static void main(String[] args) throws MalformedURLException, XmlRpcException
{
// TODO code application logic here
Session openERPSession;
openERPSession = new Session("localhost", 8069, "Demo", "admin", "demo@2013");
try {
// startSession logs into the server and keeps the userid of the logged in user
openERPSession.startSession();
ObjectAdapter partnerAd = openERPSession.getObjectAdapter("hr.attendance");
//////
////// Example code snippet goes here
//////
Object[] ids = new Object[] {0,1,2,3,4,5};
RowCollection partners = partnerAd.readObject(ids, new String[]{"action","action_desc", "day", "employee_id", "sheet_id"});
for (Row row : partners){
System.out.println("Row ID: " + row.getID()+"Action:" + row.get("action")+" day" + row.get("day")+" EmpName" + ((Object[])row.get("employee_id"))[1].toString()+" EmpId" + ((Object[])row.get("employee_id"))[0].toString()+"/ "+row.get("employee_id"));
}
Row newPartner = partnerAd.getNewRow(new String[]{"action", "day", "employee_id"});
newPartner.put("action", "sign_out");
newPartner.put("day", "2013-07-03");
newPartner.put("employee_id", new Object[] {"2","Fabien Pinckaers"});
partnerAd.createObject(newPartner);
System.out.println("New Row ID: " + newPartner.getID());
} catch (Exception e) {
System.out.println("Error while reading data from server:\n\n" + e.getMessage());
}
}
Error message (When I debug, then error get thrown when at createObject line. Please help Error while reading data from server: For input string: "[Ljava.lang.Object;@dd462c"
I tried passing employee_id in both formats as mentioned below. 1. newPartner.put("employee_id", 2); 2. newPartner.put("employee_id", "2"); But both time I ended up with following error again Error while reading data from server: java.lang.String cannot be cast to java.lang.Integer The reason I was trying to passing object as in first posting was because when I read the values from iterating, I had to cast as (Please take a look at my code)
((Object[])row.get("employee_id"))[0].toString() &
((Object[])row.get("employee_id"))[1].toString()
to read employee id and employee name out of the object. Actually I was expecting only employee to be present there. Then I thought that I might need to cast it back to object to insert also. But ended up failing.
However when I tried inserting without employee_id object. It worked. When I check field type of employee_id, it was many to one at Setting=>Database Structure -> Models for "hr.attendance" How do I insert in case if field is many 2 one?
Solution
Here you go, All thanks to Pieter.
https://sourceforge.net/p/openerpjavaapi/discussion/general/thread/871410e3/?limit=25#bf63