有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android Room数据库中id字段的java名称字段约定

我对文件室中的字段命名约定有问题,尤其是在“id”字段中

我创建的每一个@Entity,我的主键,我总是称之为“id”,只是“id”

现在我必须用带有@embedded@实体的POJO查询数据库

为了避免冲突,我在表格前面加了前缀

public class FilialCruzaDto {

    @Embedded
    public FilialCruza filialCruza;

    @Embedded(prefix = "_filial_")     //_filial_
    public Filial filial;

    @Embedded (prefix = "_anio_")     //Para Evitar Conflictos de id
    public Anio anio;
}

实体“FilialCruza”

@Entity(tableName = "filialcruza",
        indices = {@Index(value = {"at_id"}, unique = true),
                @Index(value = {"filial_id"})}
)
@TypeConverters(DateConverter.class)
public class FilialCruza implements Serializable {
...

    @PrimaryKey(autoGenerate = true)
    private int id;

...

另一个实体

@Entity(tableName = "filial",
        foreignKeys =
                {@ForeignKey(entity = TipoCosecha.class, parentColumns = "id", childColumns = "tipo_cosecha_id"),
                 @ForeignKey(entity = TipoFilial.class, parentColumns = "id", childColumns = "tipo_filial_id"),
                 @ForeignKey(entity = Anio.class, parentColumns = "id", childColumns = "anio_id")
                },
        indices = {@Index(value="anio_id"), @Index(value="tipo_filial_id"), @Index(value="tipo_cosecha_id")}
        )
@TypeConverters(DateConverter.class)
public class Filial implements Serializable {

    @PrimaryKey
    private int id;

 ... more fields ...

现在是刀

// DTOs
    @Transaction
    @Query("SELECT filialcruza.*, " +
            "_filial_.*, " +
            "_anio_.* " +
            " FROM filialcruza" +
            " LEFT JOIN filial as _filial_ on filialcruza.filial_id = _filial_.id " +
            " LEFT JOIN anio   as _anio_ on _filial_.anio_id = _anio_.id " +
            " WHERE filialcruza.id = :id" +
            " ORDER BY filialcruza.nroParcela"
    )
    FilialCruzaDto getFilialCruzaDto(int id);

现在我遇到的问题是。。。 当我检查FilialCruzaDao_Impl时。爪哇

我发现这句话:

    final int _cursorIndexOfId = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
    ...

    final int _cursorIndexOfId_1 = CursorUtil.getColumnIndexOrThrow(_cursor, "id");
    ... 

    final int _cursorIndexOfId_2 = CursorUtil.getColumnIndexOrThrow(_cursor, "id");

这使得每个_cursorIndexOfId,_cursorIndexOfId_1,_cursorIndexOfId_2在_cursor中占据相同的字段位置。 但我在实体前面加了前缀

我应该更改实体上的所有“id”吗? 还有其他解决办法吗? 也许按字段选择字段,并排除联接表上的“id”

我希望我说得很清楚。 顺致敬意, #StayatHome和Makeat软件


共 (0) 个答案