1

Android 1. UserItem 2. AccountItem 3. CommunityItem中有 3 个表扩展了 SugarRecord(SugarOrm Library)

每个用户都有一个帐户,一张表来保存用户的地址,电话,一些社交地址,......

我使用的代码是:

用户项:

int fieldId;
int userId;
String name;
String family;
String cover;
String avatar;

// ==================== RelationShips ...
AccountItem accountItem;
CommunityItem communityItem;
// How to define Get/Set To Relation Items

账户项目:

int userId;
String authKey;
String authValue;
String userName;
String email;
String password;
String type;
String token;
String url;
String createDate;
String updateDate;

社区项目:

int userId;
String phone;
String mobile;
String facebook;
String instagram;
String linkedIn;
String summer;
String website;
String url;
String margin;
String state;
String city;
String address;

但它不起作用,如何定义与这个例子的关系?

4

3 回答 3

1

您可以在 Java 代码中设置对象:

UserItem user = new User():
//...
//Setters
//..

AccountItem accountItem = new AccountItem();

//...
//Setters
//..
accountItem.save(); //Make sure you save this registry to your database first.

user.accountItem = accountItem)
user.save();

请记住将 UserItem 类中的 AccountItem 属性设为“公共”

于 2017-01-26T22:16:58.413 回答
1

已经有一段时间了,但无论如何......正如@satyan在this issue#60建议的那样,做一对多关系的最简单方法。假设一个User有多个Account,这可以使用自定义 getter 来实现,如下所示:

import com.orm.dsl.Ignore;

class User extends SugarRecord<User> {
  private int fieldId;
  private int userId;
  private String name;
  //...
  @Ignore
  private List<Account> accounts;

  public List<Account> getAccounts(){
      return Account.find(Account.class, "user = ?", this.id.toString());
  }  
}

class Account extends SugarRecord<Account> {
  private int userId;
  private String authKey;
  private String authValue;
  //...
  private User user;
}

注意:我们可以添加@Ignore,因为我们不需要持久化,因为它由类中accounts的引用处理。一个简单的用法示例如下:userAccount

User admin = new User();
admin.userId = 1;
admin.name= "admin";
if (admin.save()){
  Account a1 = new Account();
  a1.userId = 1;
  a1.user = admin;
  if (a1.save()){
    Log.d("TAG", "Account saved.");
  }
}

一对一的关系应该更容易,只需使用文档中所示的参考字段。

目前的当前版本是 1.5。

希望这可以帮助!

于 2018-02-10T00:23:36.850 回答
1

SugarORM 目前不支持一对一关系,而且一对多关系也没有很好地实现:

  • 我们将尝试改进我们处理一对多关系的方式

  • 一对一的关系还不行

资料来源:糖 ORM

于 2016-04-11T14:18:57.460 回答