簡體   English   中英

領域新變化?

[英]Realm new changes?

我在更新領域有一些問題

那是我的課

public class Cliente extends RealmObject {
@PrimaryKey
    private long id;
    @Required
    private String nombre;
    private String apellido;
    private String imagen;
    private boolean habilitado;
    private RealmList<Obra> obras;

並只將此代碼插入

Realm realm = Realm.getDefaultInstance();
        realm.beginTransaction();
        Cliente cliente = realm.createObject(Cliente.class);
        cliente.setId(1); 
        cliente.setNombre("Desconocido");
        cliente.setApellido("-");
        cliente.setHabilitado(true);
        realm.copyFromRealm(cliente);
        realm.commitTransaction();
        realm.close();

好的,您有問題,但是曾經以這種方式在Realm和android上工作

Caused by: io.realm.exceptions.RealmException: 'Cliente' has a primary key, use 'createObject(Class<E>, Object)' instead.
   at io.realm.Realm.createObjectInternal(Realm.java:820)
   at io.realm.Realm.createObject(Realm.java:801)
   at app.obraresuelta.model.Cliente.insertUsuarioDefault(Cliente.java:38)
   at app.obraresuelta.PrincipalActivity.onCreate(PrincipalActivity.java:31)
   at android.app.Activity.performCreate(Activity.java:6289)

查看消息:

“客戶端”具有主鍵,請改用“ createObject(Class,Object)”。

因此它說您應該使用realm.createObject(Cliente.class, id); 代替。

    Realm realm = Realm.getDefaultInstance();
    realm.executeTransaction(new Realm.Transaction() {
       @Override
       public void execute(Realm realm) {
           Cliente cliente = realm.createObject(Cliente.class, 1);
           cliente.setNombre("Desconocido");
           cliente.setApellido("-");
           cliente.setHabilitado(true);
       }
    });
    realm.close();

您應該將對象創建為普通的Java對象,設置其屬性,然后創建領域對象。

您可以使用copyToRealm函數。

https://realm.io/docs/java/latest/#primary-keys

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM