gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:08:31 24 4
gpt4 key购买 nike

在我的代码中,我将一些基本字段放在基本抽象类 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com