我无法编写查询来获取 android 中 green dao 的 Objectbox 数据库中的不同值
我正在使用greenDao访问我的Android手机中的数据库.一切似乎都很好,并且遵守.但是当我运行该程序时,它在DaoMaster.java - > OpenHelper类,createAllTables上的onCreate方法(db,false)崩溃;
以下是异常消息:
>05-03 15:40:34.109: E/AndroidRuntime(28587): FATAL EXCEPTION: main
05-03 15:40:34.109: E/AndroidRuntime(28587): java.lang.NoClassDefFoundError: com.hook38.sporttimer.model.sql.DaoMaster
05-03 15:40:34.109: E/AndroidRuntime(28587): at com.hook38.sporttimer.model.sql.DaoMaster$OpenHelper.onCreate(DaoMaster.java:42)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:165)
05-03 15:40:34.109: E/AndroidRuntime(28587): at com.hook38.sporttimer.controller.CountdownTimerStoreController.<init>(CountdownTimerStoreController.java:32)
05-03 15:40:34.109: E/AndroidRuntime(28587): at com.hook38.sporttimer.controller.CountdownTimerController.<init>(CountdownTimerController.java:57)
05-03 15:40:34.109: E/AndroidRuntime(28587): at com.hook38.sporttimer.CountDownTimerActivity.onCreate(CountDownTimerActivity.java:49)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.Activity.performCreate(Activity.java:4465)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-03 15:40:34.109: E/AndroidRuntime(28587): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 15:40:34.109: E/AndroidRuntime(28587): at …Run Code Online (Sandbox Code Playgroud) 我将ORM GreenDAO用于我的Android应用程序的DAL层.我在两个表之间的一对一关系中遇到了问题.例如:
Entity page = schema.addEntity("Page");
Entity bookmark = schema.addEntity("Bookmark");
Property pageIdProperty = bookmark.addLongProperty("pageId").getProperty();
bookmark.addToOne(page, pageIdProperty); // any bookmark related to a page
page.addToOne(bookmark, pageIdProperty); // any page can has a bookmark
Run Code Online (Sandbox Code Playgroud)
这种关系错了吗?
当我定义它,我不能把page.getBookmark()在页面类
如果这是真的,我是否能以一对一的关系使其双向化?
我看到,由于性能问题,greenDao不希望使用注释来生成DAO和TO.但是,如果我仍然需要为解析器目的注释例如TO?有没有办法实现这一目标?
例:
如果我们使用GreenDAO代码生成创建Customer实体,它将创建CustomerDAO和Customer类,对吧?
那么,如果我正在使用返回Customer对象的SOAP webservices,并且为了便于解析这个Customer对象,我会使用一个带注释的框架,比如simpleXML.在使用GreenDAO重新生成代码时,有没有办法更改Customer类而不会松散每个注释?
谢谢!
我需要验证一些条件来创建一个完整的查询:
QueryBuilder qb = getMyObjDao().queryBuilder();
if(someCondition)
Run Code Online (Sandbox Code Playgroud)qb.where(MyObjDao.Properties.Prop1.eq(someValue));else
qb.whereOr(MyObjDao.Properties.Prop2.eq(someValue),MyObjDao.Properties.Prop2.eq(someValue));if(someOtherCondition)
Run Code Online (Sandbox Code Playgroud)qb.where(MyObjDao.Properties.Prop3.eq(someValue));其他
Run Code Online (Sandbox Code Playgroud)qb.whereOr(MyObjDao.Properties.Prop4.eq(someValue));
那么是否可以连接查询构建器条件并动态创建查询构建器?或其他任何事情:
(a ='%'+ condition1或a ='%'+ condition1 +'%'或a = condition1 +'%')和
|(b ='%'+ condition2或b ='%'+ condition2 +'%'或b = condition2 +'%')和....
如何在绿道?
我有2张桌子A和B.
表A包含名称,表B包含选定的名称.
现在我想使用greendao对这些表执行以下查询,如果有可能请告诉我,如果不存在任何替代方法(可能是原始查询).
select *
from A inner join B
on A.nameid = B.nameid
Run Code Online (Sandbox Code Playgroud)
另外,表A列:id, nameid, name
和表B列:id, nameid, name, rating
继本教程之后,我已经能够创建一个可编译和运行的工作应用程序模块,但如果我将相对路径传递给generateAll方法则会失败.如果我指定一个绝对路径,它工作正常.我的android studio项目由几个模块组成,结构如下
project_root,包含每个模块的子目录
/ daogenerator
/应用
每个都有自己的src目录,我正在调用generateAll:
new DaoGenerator().generateAll(schema,
"../app/src");
Run Code Online (Sandbox Code Playgroud)
这会导致io错误,表明该目录不存在.我已经修改了许多合理替代方案的路径,并确认路径存在于磁盘上,但仍然出现错误.绝对路径工作正常,所以我试图理解我错过了什么让它使用相对路径.谢谢.
我在我的 Android 项目中使用 GreenDAO。
我已经实现了一个增量更改表,因此我可以跟踪对实体的各个更新。我想在一个“updateTask”方法中跟踪这些更改,因此无论从何处调用它,都可以更新增量表。
目前,我有一种方法可以更改 Task 实体的状态。
public void updateTaskStatus (Long taskId, String status) {
Task task = taskDao.load(taskId);
task.setStatus("Pending");
updateTask(task);
}
Run Code Online (Sandbox Code Playgroud)
然后我有我的任务更新方法。
public void updateTask (Task task) {
//Check for any changes to the Task entity in this method and update the delta table.
Task existingTask = taskDao.load(task.getId()); // <---this call returns the same reference to the task object that was passed into this method.
if (!existingTask.getStatus().equals(task.getStatus())) { //<--this is always returning false as both existingTask and task …Run Code Online (Sandbox Code Playgroud) 我创建了一个Short只需要识别的实体.
这是我生成的代码:
public Source(Short id, String name) {
this.id = id;
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
TestCode DatabaseHelperTest.java:
public void testInsertAndLoad(){
Source source = new Source((short) 0, "TestSource");
SourceDao sourceDao = daoSession.getSourceDao(); //#line 26
sourceDao.insert(source);
Short id = source.getId();
assertNotNull(id);
}
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到了ClassCastException:
Running tests
Test running started
java.lang.ClassCastException: java.lang.Short cannot be cast to java.lang.Long
at de.greenrobot.dao.identityscope.IdentityScopeLong.put(IdentityScopeLong.java:31)
at de.greenrobot.dao.AbstractDao.attachEntity(AbstractDao.java:695)
at de.greenrobot.dao.AbstractDao.updateKeyAfterInsertAndAttach(AbstractDao.java:362)
at de.greenrobot.dao.AbstractDao.executeInsert(AbstractDao.java:355)
at de.greenrobot.dao.AbstractDao.insert(AbstractDao.java:293)
at com.tuanchau.DatabaseHelperTest.testInsertAndLoad(DatabaseHelperTest.java:26)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Run Code Online (Sandbox Code Playgroud)
那么,GreenDAO是否允许 …
我试图将用java编写的android项目转换为kotlin.我的greendao课程已经随时生成,我会收到一条Unresolved reference: DaoSession错误消息.我有
kapt { generateStubs = true }我的构建gradle代码.