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) 个答案