SQLite One-to-Many如何获得外键对象?

时间:2017-06-02 07:06:52

标签: android sqlite one-to-many

例如,我有一个带有“user”表外键的“phone”表。如何获取同一用户的电话列表,其中phone.user字段与每部电话的对象相同?

public class User{
    int id;
    String name;
}

public class Phone{
    int id;
    User user;
    String number;
}

╔═════════╦══════╗
║ USER_ID ║ NAME ║
╠═════════╬══════╣ 
║       1 ║ User ║
║       2 ║ Man  ║
║       3 ║ Dog  ║
╚═════════╩══════╝

╔═══════════╦═════════════╦════════╗
║ PHONE_ID  ║ USER_ID_FK  ║ NUMBER ║
╠═══════════╬═════════════╬════════╣
║         1 ║           1 ║    000 ║
║         2 ║           1 ║    001 ║
║         3 ║           3 ║    002 ║
║         4 ║           1 ║    003 ║
║         5 ║           3 ║    004 ║
╚═══════════╩═════════════╩════════╝

当我查询时:

  

SELECT * FROM PHONES

从游标中获取USER_ID_FK,然后转到USERS表:

  

SELECT * FROM USERS WHERE ID = USER_ID_FK

每次我从USERS获取一行时,它都会创建新的User对象。

好的,这是合乎逻辑的。

但我想知道是否有将同一个外键映射到同一个对象的方法?我想ORM是解决它的方法(因为在Java EE ORM中使用注释来处理它)。但是原生Android框架工具能帮我实现这个目标吗?

P.S。我知道可以使用JOIN简化查询,但我试着清楚地解决问题。

0 个答案:

没有答案