java - 实体中的继承,使用objectbox

标签 java android inheritance objectbox

在我的代码中,我将一些基本字段放在基本抽象类 BaseEntity 中:

public abstract class BaseEntity {

    @Id
    private long id;

    public BaseEntity() {
    }

    public BaseEntity(long id) {
        this.id = id;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
}

因此,在子类 User 中,我没有定义 id 字段:

@Entity
public class User extends BaseEntity {

    private String name;
    private String login;
    private String gender;

    private String email;
    private String phoneNumber;

    private Date registrationDate;
    private Date lastActivityDate;

    private long systemId;

    public User() {
    }

...Getters and Setters
}

因为它在父类(super class)中定义。我不想在每个类中创建一个 id 字段,也不想在数据库 BaseEntity 类中持久化。我得到一个错误: 错误:[ObjectBox] 代码生成失败:找不到实体用户的 ID 属性(包:...)

如何通过继承使用对象框?

最佳答案

目前不支持实体的多态性,但是有一个feature request .

如果有帮助,您可以寻求接口(interface)。例如:

public interface BaseEntity {
    long getId();
}

注意:您可以为 ID 设置一个 setter,但我个人的建议是将 id 字段包私有(private)(这样 ObjectBox 可以从生成的类中访问)并且没有 setter,因为它表明可以更改随时提供 ID。

更新:引入了 ObjectBox 1.4 entity inheritance (非多态)。

关于java - 实体中的继承,使用objectbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256275/

相关文章:

java - 在文件中添加新元素

java - 带参数传递 Callable<T>

android - 使普通布局看起来像 PreferenceScreen

android - "This method is deprecated"对应用程序开发人员意味着什么

python - 使用 Django 模型继承时如何避免这种冗余?

java - 区分多个WebServiceExceptions?

java - 何时使用泛型方法以及何时使用通配符?

java - 根据从 Json 解析的项目更改 listView 行背景颜色

java - List<Dog> 是 List<Animal> 的子类吗?为什么 Java 泛型不是隐式多态的?

ruby - 从父类(super class)调用子类方法 - 设计模式