android - 两个具有相同结构的不同命名表(GreenDAO)

标签 android greendao

我正在尝试使用 greendao 创建两个相同结构的表。所以基本上,我正在做以下事情来实现。创建 Position.class:

public class Position {

    protected double longitude;
    protected double latitude;

    public Position(double longitude, double latitude) {
        this.longitude = longitude;
        this.latitude = latitude;
    }

    public double getLongitude() {
        return longitude;
    }

    public double getLatitude() {
        return latitude;
    }

然后创建第二类CurrentRouePosition.class

@Entity(
        generateConstructors = false,
        nameInDb = "CURRENT_POSITIONS"
    )
    public class CurrentPosition extends Position{

    public CurrentPosition(double longitude, double latitude) {
        super(longitude, latitude);
    }

不幸的是,它不创建 DAO 类。我该怎么做才能在 GreenDAO 中实现相同结构的不同名称表?

最佳答案

截至目前,GreenDAO 不支持实体继承。有一些方法可以实现类似的东西,但它们涉及使用旧的生成器方法(你不应该使用)。 https://github.com/greenrobot/greenDAO/issues/362

总的来说,我不明白你为什么要实现另一个与第一个完全相同的类。唯一不同的是插入数据库的时间。 相反,我建议为您的实体明确定义一个自动递增 id。通过这样做,您可以从您的 DAO 类中查询最后的结果(=最高 ID),这将是您当前的位置。

@Entity
public class Position {

    @Id(autoincrement = true)
    private Long id;

    protected double longitude;

    protected double latitude;
}

查询当前位置:

Position currentPosition = positionDao.queryBuilder()
    .orderDesc(PositionDao.Properties.Id).limit(1).unique();

关于android - 两个具有相同结构的不同命名表(GreenDAO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44198318/

相关文章:

android - GreenDAO ToOne 关系不起作用

java - CardView 每个单独的卡之间不存在间距

java - GreenDao是否更新tableDao的数据库 session ,通过执行sql更新表记录

GreenDao 查询 OR 内 AND

java - Java 和 Android 中对象的作用域和销毁

android - 了解 greenDao 中的删除和删除关系

android - 附加 android 源后,Eclipse 弹出对话框缺少信息

android - 无法在模拟器中读取SD卡中的文件

android - 播放 Activity 中的铃声突然停止

android - 将 android 应用程序连接到 sockjs 服务器