2016-07-27 75 views
0

不能为我的生活弄清楚这一点。 所以在我的请求对象我有ORMLite id始终为空(没有id字段)

@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应该是自动创建的? 我OrmLites BaseDaoImpl类看有有这条线的extractId方法:

FieldType idField = tableInfo.getIdField(); 

这始终是零。任何人都可以了解我如何解决这个问题。 谢谢

回答

0

您有'id = true'和'generatedId = true'属性集。你可以请删除'id = true',看看会发生什么?

+0

我仍然收到相同的错误 – goodgamerguy

+0

'generatedId'暗示'id'。 – Gray

+1

你有任何关联对象吗?这个怎么样? @ForeignCollection(id = true) 请看这里:http://ormlite.com/javadoc/ormlite-core/com/j256/ormlite/field/ForeignCollectionField.html – SISLAM

1

FieldType idField = tableInfo.getIdField(); ......总是空的。

这个问题似乎是你的实体,与保存点无关。不知怎的,由DAO生成的tableInfo与您的实体不匹配。如果entityId字段在您的课程中,那么我怀疑您的ormlite_config.txt文件尚未更新。

+0

嗯奇怪。我在我的项目中找不到任何ormlite_config.txt文件。 entityId字段在我的班级,但奇怪的是这是适用于另一种情况 – goodgamerguy

+1

任何机会在超级类@goodgamerguy? – Gray

+0

不,我看不到它 – goodgamerguy