[英]ORMLite id is always null (does not have an id field)
我一生无法解决这个问题。 所以在我的请求对象中
@DatabaseField(id = true, columnName = "ID", canBeNull = false, generatedId = true)
private int entityId;
每当我这样做我的插入方法时:
public void insert(T object) throws SQLException {
DatabaseConnection connection = objectDao.startThreadConnection();
Savepoint savepoint = null;
try {
savepoint = connection.setSavePoint(null);
objectDao.createOrUpdate(object);
} finally {
connection.commit(savepoint);
objectDao.endThreadConnection(connection);
}
}
我总是会收到这样的错误
Class class UnsyncTripRequest does not have an id field
我不确定为什么要从我理解的ID中自动获取ID的原因中得到此信息? 我在OrmLites BaseDaoImpl类中看到有一个extractId方法具有以下内容:
FieldType idField = tableInfo.getIdField();
始终为空。 任何人都对我如何解决此问题有任何见识。 谢谢
FieldType idField = tableInfo.getIdField();
...始终为空。
问题似乎出在您的实体上,与保存点无关。 DAO生成的tableInfo
与您的实体不匹配。 如果entityId
字段在您的班级中,则我怀疑您的ormlite_config.txt
文件尚未更新。
您同时设置了“ id = true”和“ generatedId = true”属性。 您能删除'id = true'看看会发生什么吗?
您正在创建,更新或删除的Dao应该同步。 使用时
com.j256.ormlite.dao.BaseDaoImpl.createOrUpdate()
ormlite extractId来查看是否可以更新,然后去更新该特定行。
如果有并行线程,则删除具有id的行。
Ormlite抛出java.sql.SQLException,说“ 没有id字段 ”
如果已同步,Dao可以访问表操作,那么您应该很好。
synchronized (objectDao){
objectDao.createOrUpdate(object);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.