java - Android Room 数据库中 id 字段的名称字段约定
问题描述
我对 ROOM 中的字段命名约定有疑问,尤其是在“id”字段中。
我创建的每个@Entity,我的主键我总是称为“id”,只是“id”。
现在我必须使用带有@embedded @entities 的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 ...
现在是 DAO。
// 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.java
我发现这行:
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”?
我希望我很清楚。此致。#StayAtHomeAndMakeGreatSoftware
解决方案
推荐阅读
- python - 从另一个函数中的一个函数调用数组
- r - R函数上未定义的字符串参数
- python - 从 conda 虚拟环境调用 Jupyter 笔记本时无法启动
- rust - 如何将具体类型与具体类型的选项进行比较是该类型不实现复制?
- java - 登录按钮的(if)语句中的问题
- elasticsearch - 嵌套对象数组的 Elasticsearch 查询
- php - 数据库中的不同时间,php
- python - 仅使用系数和截距模拟 sklearn 逻辑回归 predict_proba
- javascript - 在 JavaScript 中关闭模式的问题
- java - 如何将 Spring Boot 应用程序与 SAML 和 JWT 令牌集成:多个 WebSecurityConfigurerAdapter