问题标签 [greendao]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
707 浏览

android - 在 android 上具有多进程的 greendao 会话

我正在从事一个大型项目,该项目涉及许多不同的应用程序同时与同一个数据库进行通信。

我一直在将我们的系统更改为 using greendao,看看它是否会给我们带来优于 Android 的性能改进ContentProvider


问题:

每次应用程序需要与数据库通信时,我都会让它获取一个新DaoSession的然后执行操作。我从不重复使用任何DaoSessions. 如果每个应用程序都有自己的应用程序会更好DaoSession吗?

请记住,我担心同时从数据库读取/写入所有这些应用程序之间的并发性。

  1. 目前我每次需要插入时都这样做:

this.daoMaster.newSession().getMyDao().insert(myDao);

  1. 或者我应该DaoSession从其他地方获得对 a 的引用并这样做:

this.daoSession().getMyDao().insert(myDao);

0 投票
1 回答
982 浏览

android - dao 与 greendao 并发插入;执行 BEGIN EXCLUSIVE 时数据库被锁定

当同一进程中有两个不同的线程试图同时保持时,我们正在测试 greendao 的并发问题。

我们在同一个进程中生成两个线程,并让它们同时插入 100 个随机填充的 dao。

绿道 1.3.0 版

如果我们做错了什么或者您需要更多信息,请告诉我,谢谢!


我们不断收到此错误:


这是我用于插入 dao 的代码:

0 投票
0 回答
787 浏览

android - greendao 在多进程环境中工作吗

greendao打算在多进程环境中工作?

查看源代码,由于缓存的处理方式和其他一些原因,它似乎不支持多进程环境。我正在寻找开发人员的确认或更多详细信息。

通过我们当前的测试,我们让它在一个多线程的进程中运行良好。然而,当我们引入一个访问同一个数据库的单独进程时,我们经常会遇到database is locked异常。


我们的测试启动了两个不同的进程,它们都启动了两个线程,这些线程随机生成daos到同一个数据库中。我们还有第三个进程,它启动两个线程,这些线程不断地daos从同一个数据库中加载所有数据。


0 投票
2 回答
1889 浏览

android - greenDAO 生成器给出了没有意义的控制台错误

总的来说,我对 Android 开发还很陌生,而且我什至从未使用过 greenDAO。但是在花了很多时间研究我的生成器类(我在其中建模我的实体)之后,我终于能够生成一些看起来类似于 GitHub 上给出的示例的东西。

然后,我将代码作为 java 应用程序运行以生成我的 DAO 文件,就像 greenDAO 上的文档所说的那样。文件已成功生成,但是我在 Eclipse 的控制台中确实得到了这一行:

由于文件已生成,我真的不确定是否需要担心。但我不明白的是,当我使用“对多”关系时,为什么会提到“一对一”关系,正如我的代码中所见。(支票簿实体中可以有许多交易实体,我打算使用每个支票簿实体的名称将交易与它联系起来。)

我需要返回并修复我的部分代码吗?请询问我是否需要澄清任何事情,并感谢您的时间!

0 投票
0 回答
394 浏览

android - 在插入数据库之前对大量数据进行排序

我需要下载一个大的 json 字符串。我为此使用aQuery。然后我需要在对象列表(10k +)中解析这个字符串(我为此使用 Gson 库)并将这个列表插入数据库(使用 GreenDAO 创建)。但在插入之前,我需要按我的对象字符串字段对该列表进行排序。我正在使用 Collat​​or 类进行排序,因为该文件可能使用不同的语言。问题是:如何使用尽可能少的内存来做这样的事情?

现在我下载一个字符串(+String,我也尝试过使用 Streams)然后解析它(+List)然后对其进行排序(更多对象)。我在一个单独的线程中做它,但即使它完成了内存也没有释放。我认为如果我可以在数据已经在数据库中时对数据进行排序(而不是在选择它时,它会很慢),那么这可以解决,但我不知道如何。

这是一些代码。这是从文件加载数据。从文件加载时内存也存在同样的问题,我使用 InputStream 而不是将 JSON 字符串放入内存。

这是解析器线程。有两个构造函数 - 一个用于从 Web 加载(字符串参数),另一个用于从文件加载(InputStream 参数)。

所有 GreenDAO 对象都是静态的。解析仅在第一次启动(从文件)和通过“更新”按钮单击(从网络)时完成。我注意到,即使我在初始(从文件)解析完成后重新启动我的应用程序,它也会使用与第一次完成解析后一样多的内存。

0 投票
4 回答
5561 浏览

android - greendao 按相关表中的字段排序

有没有办法用greenDao按相关表中的字段排序?例如,我有一张汽车表和一张司机表。每辆车都有一名司机。现在我想查询(例如蓝色)汽车并按司机姓名排序

0 投票
1 回答
837 浏览

android - GreenDao reload an object when using IdentityScope != None

I have the case that I operate on some object I got from greenDao and in some cases I have to revert the changes. I only got this to work with IdentityScope.None - with some IdentityScope I found no way to do that - even refresh() which sounded promising was not bringing back the data from the database. Is there any way to do this with a IdentityScope?

0 投票
4 回答
17390 浏览

android - greenDao 架构升级

我看到了另一个关于使用 green dao 进行架构升级/迁移的问题(这里

该答案中有很多链接可以在进行架构升级时使用一个好的模式 - 但是没有示例说明您对数据实际执行了什么操作以正确迁移它,而且我找不到任何东西。

就我而言,我的迁移非常简单——我不希望转换任何现有数据,我只需要在我的模式中添加一些新表,我怀疑这是一种相当常见的情况。

在不删除用户已经保存的数据的情况下,将新表添加到架构中的最简单方法是什么?一个具体的例子将不胜感激。

如果 greenDao 提供了一个类似于 DevOpenHelper 的类,该类将简单地添加以前不存在于模式中的新表/列,而不首先删除现有的表/数据,那就太棒了。

0 投票
6 回答
12594 浏览

android - 如何清理/删除greenDao数据库

目前我正在这样做:

但是,当我尝试将实体添加到数据库时,我收到崩溃日志,说该表不存在

Edit1:我知道发生这种情况是因为数据库已锁定并且尚未创建表。所以我将这个问题简化为问题 - 如何知道表是否锁定在 grrenDao/Sqlite 中?

0 投票
2 回答
1520 浏览

android - GreenDao 无法建立数据库

我将 GreenDao 用于我的 Android 项目。但是有个小问题!我无法启动我的应用程序,因为我的数据库连接出现了一些故障

错误:

我找不到解决方案,有人说,这取决于我的 DevOpenHelper 语句中的“this”。但所有这些解决方案都无济于事。

这是代码: