如何在ORMLite中重命名列名?
我正在尝试编写该查询SELECT id as _id from some_table
Android游标适配器要求我们使用名为_id
的列,ORMLite
要求我们将列命名为id
。
我正在尝试编写该查询并从此查询返回Cursor
。
Dao<NewsArticle, Long> newsArticleDao =
((SomeApp)mContext.getApplicationContext()).getDAOConnection().getDAO(
NewsArticle.class);
QueryBuilder<NewsArticle, Long> query = newsArticleDao.queryBuilder().selectRaw(
"`id` as `_id`");
PreparedQuery<NewsArticle> preparedQuery = query.prepare();
CloseableIterator<NewsArticle> iterator = newsArticleDao.iterator(preparedQuery);
AndroidDatabaseResults results =
(AndroidDatabaseResults)iterator.getRawResults();
cursor = results.getRawCursor();
这就是我到目前为止所得到的,但是当我将查询传递给iterator.
java.sql.SQLException: Could not compile this SELECT_RAW statement since the caller is expecting a SELECT statement. Check your QueryBuilder methods.
答案 0 :(得分:1)
我想我必须回答我的问题。
我仍然无法弄清楚如何重命名列,但我找到了问题的解决方案。
Android Custom Adapter
要求名为_id
的列为真,但ORMLite
不要求列名为id
,我错了。它希望您将列标记为id。
在我的模特中,我标记了我的身份,现在它就像一个魅力。
@DatabaseField(id = true)
private long _id;
答案 1 :(得分:1)
如何在ORMLite中重命名列名?
我不确定我是否理解重命名的含义。我不认为你的意思是模式改变。您是在谈论如何在数据库中分配字段的名称?你可以这样做:
@DatabaseField(id = true, columnName = "_id")
private long id;
呃,不。 ORMLite不应该关心列的名称。也许你在谈论Android?ORMLite要求我们将列命名为id。
我正在尝试编写该查询并从此查询中返回Cursor。
这是一个不同的问题吗?
java.sql.SQLException:由于调用者期望SELECT语句,因此无法编译此SELECT_RAW语句。检查QueryBuilder方法。
你得到的是因为你在打电话:
newsArticleDao.queryBuilder().selectRaw(...);
然后致电:
query.prepare();
...这会将查询转换为仅适用于Dao.queryRaw(String,String ...)类型语句的内容。
我认为您希望使用columnName
指定列的名称。你看过javadocs for @DatabaseField
了吗?或者也许在online manual中查找“列名称”?