[英]OrientDB: can't select data from connected document
我正在嘗試執行一個簡單的SQL查詢來從搜索的文檔中檢索數據以及連接文檔的一些屬性。 但是,由於某種原因,如何從連接文檔中選擇屬性陷入了困境。 這是我的簡單場景:
我有2個文件,一個帳戶和一個用戶。 帳戶文檔對名為“Employs”的用戶具有優勢。 我正在嘗試通過電子郵件和密碼登錄用戶。 如果找到用戶的記錄,我只需要從帳戶文檔中獲取一些用戶數據和少量屬性,以存儲在用戶的會話中。
這是我的查詢:
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('test@test.com', 'abc');
ODocument d = result.get(0);
System.out.println("1 "+ d.field("account.id"));
System.out.println("2 "+ d.field("userRid"));
System.out.println("3 "+ d.field("account.company"));
System.out.println("4 "+ d.field("firstName"));
System.out.println("5 "+ d.field("lastName"));
System.out.println("6 "+ d.field("account.active"));
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"));
}
它無法創建SessionUser對象。 更具體地說,它無法檢索帳戶屬性。 以下是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
我確實看到帳戶屬性作為對象進入,只是無法弄清楚如何輕松選擇它們。 我不想通過手動轉換列表然后設置等來獲得一個簡單的account.id元素。 我確信有一種直截了當的方式,就是看不到它。
選擇連接文檔數據的正確方法是什么? 或者,有沒有更好的方法來構建查詢本身?
謝謝。
我已在Google網上論壇上回復了您https://groups.google.com/d/msg/orient-database/ta4izTYq-CY/l5tHPOu5CgAJ
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.