Hi guys, I posted this question on stackoverflow <http://stackoverflow.com/questions/40732762/orientdb-cant-select-data-from-connected-document> last week, but didn't get an answer, so I decided to re-posted it here.
*Using OrientDB v2.2.12*. I'm trying to execute a simple sql query to retrieve data from the document searched as well as few properties of a connected document. But, for some reason ran into a dead wall on how to select the property *from the connected document*. Here is my simple scenario: I have 2 documents, an Account and a User. Account document has an edge to a User named 'Employs'. I'm trying to login a user by email and password. If record for the user is found, I simply need to get some user data from the User class (works fine) and few properties from an account document (doesn't work right) to be stored in user's session. Here is my query: try (ODatabaseDocumentTx db = DbPool.getConnection()) { String sql = " select @rid.asString() as userRid, firstName, lastName, " + " active as userActive, in('Employs') as account " + "from User " + "where email = ? and password = ?"; OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<>(sql); List<ODocument> result = db.command(query).execute('t...@test.com', 'abc'); ODocument d = result.get(0); System.out.println("1 "+ d.field("account.id")); // <-- fails here System.out.println("2 "+ d.field("userRid")); System.out.println("3 "+ d.field("account.company")); // <-- fails here System.out.println("4 "+ d.field("firstName")); System.out.println("5 "+ d.field("lastName")); System.out.println("6 "+ d.field("account.active")); // <-- fails here System.out.println("7 "+ d.field("userActive")); return new SessionUser( d.field("account.id"), d.field("userRid"), d.field("account.company"), d.field("firstName"), d.field("lastName"), d.field("account.active"), d.field("userActive")); } It fails to create the SessionUser object. More specifically, it fails on retrieval of the account properties. Here is how the data looks in System.out: 1 [17] 2 #37:0 3 [Seller 1] 4 Mike 5 Maloney 6 [true] 7 true WARN : 2016-11-21 17:53:53,036 WARN c.t.e.k.c.ExceptionHandler - Error: java .util.LinkedHashSet cannot be cast to java.lang.Integer *Here is how a single account.id property looks like in the debugger* <https://lh3.googleusercontent.com/-YOuTE7s3Nkw/WDyMiR8VZkI/AAAAAAAAAAw/a9h1gGLIq4wmpCHi6rbAjF1DjnfddNhyQCLcB/s1600/Screen%2BShot%2B2016-11-21%2Bat%2B5.48.02%2BPM.png> I do see that the account properties are coming in as objects, just can't figure out how to select them easy. I didn't want to go through manually casting list then set, etc. to get to a simple account.id element. I'm sure there is a straight forward way, just can't see it. For example, if I can't use this d.field("account.id") then how do I get the ID 17? What is the right way to select data of a connected document? Or, is there a better way to construct the query itself? Thanks. -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to orient-database+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.