问题标签 [foreign-collection]

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 回答
1099 浏览

java - 域类中的 ForeignCollection 初始化

我有一个具有多对多关系的域对象。Menu可以有很多CategoriesCategory也可以有很多MenusMenu负责Categories

我为我的应用程序进行了相当分层的设计,域类与DAO-s (我有一个特殊的同步类用于访问工厂和存储库类并保持关系同步)和应用程序层(我在那里使用服务,例如AddMenuService所有逻辑存在)。

例如我创建了一个MenuCategory对象。通过特殊的 appender 类将此类别添加到菜单中。然后我同步对象(验证,检查对象是否存在于数据库中或创建一个新对象,如果需要,调用其他同步类,比较不同的对象并保存或更新它们)。类别只能通过 MenuSyncro 添加。

我知道我可以使用,但是有没有什么方法可以在类和类中Dao.getEmptyForeignCollection(String fieldName);初始化而无需先访问 DAO 对象,因为我不断收到异常,因为这些集合没有初始化?ForeginCollection<MenuCategory> categories;MenuForeignCollection<MenuCategory> menus;CategoryNullReference

课程

菜单类

类别.class

}

MenuCategory.class

预先感谢,邪恶的

0 投票
1 回答
581 浏览

ormlite - ForeignCollection.add() 为同一个对象插入两行

我有 3 节课:

一个

B 包含一个用 getEmptyForeignCollection() 构造的急切的 ForeignCollection<A>

C 包含一个用 getEmptyForeignCollection() 构造的热切的 ForeignCollection<A>

我创建 B 和 C 的实例,并通过调用 create() 将行插入到它们各自的数据库表中。到目前为止,一切都很好。

我创建了一个 A 的实例并将其添加到 B 的 ForeignCollection。这样做会导致 BaseForeignCollection 在数据库表中插入代表 As 的新行。这可以按预期工作(尽管我更愿意手动执行 INSERT)。

但是,当我将 A 的相同实例添加到 C 的 ForeignCollection 时,这会导致 BaseForeignCollection 在表示 As 的数据库表中插入另一行。这是不希望的,因为 A 已经存在。

我做错了什么,还是这是一个错误?有没有办法做我需要做的事情?

预先感谢您的帮助。

0 投票
1 回答
774 浏览

java - 如何使用 ormlite 4.42 持久化 ForeignCollection?

我正在尝试在桌面应用程序上使用 ormlite 4.42 和 sqlite持久化一个惰性ForeignCollection 。

我有一个Event包含以下集合的类EventDate

EventDate课程是:

这是我用来添加EventDates和持久化它们的代码:

EvenDates正确添加到 sqlite 表中,但该字段event_id为 null :EventDates未链接到Event.

我没有错误信息。我究竟做错了什么 ?

注意:我尝试了急切的收集(添加e2.getDates().updateAll()),但它也不起作用。

0 投票
2 回答
3141 浏览

android - ORMLite 并将现有的持久化实体添加到外部字段集合

我有一个Language带有 ForeignCollection 实体的Country实体:

我在我的数据库中创建了一个国家,比如说代表法国。后来,我通过查询它的 id 来检索它,我想将它添加到语言的外国国家集合中:

但是,标记的行countries.add(country)会导致抛出非法状态异常:

01-27 13:39:19.112: E/AndroidRuntime(15614): 原因: java.sql.SQLException: 插入数据库失败: INSERT INTO countries( identifier, name, language_id) VALUES (?,?,?) 01-27 13:39 :19.112: E/AndroidRuntime(15614): 在 com.j256.ormlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:22)

为什么会.add()触发重新创建存在于数据库和内部 DAO 中的实体?而我应该怎么做呢?

0 投票
1 回答
1480 浏览

java - ORMLite 迭代 ForeignCollection 抛出异常

我尝试迭代ForeignCollection<OrderItems>。如果eager设置为,则此方法有效,true但惰性选项仍然无效。

首先,我做

在哪里close()关闭数据库连接并convertToWS()进行迭代。

一部分convertToWS()

从返回后调用方法关闭convertToWS()。我与其他对象convertToWS()一起工作,遇到任何问题。

我也尝试使用CloseableIterator并在块中关闭它finally,但没有成功。期待这一点,我不关闭连接。

例外:

0 投票
2 回答
5818 浏览

android - 持久化包含 ForeignCollection 的类时的 Android ormlite SQLException

我想使用 ormlite 来持久化仅包含 ForeignCollection 的对象。该类如下所示:

Pet 类如下所示:

我坚持这样的课程:

这与以下崩溃:

如果我向 Person 添加另一个字段,例如“名称”,它会起作用。但我只想有一个只包含一个集合的类。那可能吗?

0 投票
0 回答
1173 浏览

android - 使用杰克逊解析并使用 ormlite android 将相同的对象插入到 sqlite

我正在使用来自 api 调用的Jackson解析 json 数据,并尝试使用ormlite在 sqlite 中插入数据。为此,我使用相同的模型类。这是我的模型类

这是访问模型类

我可以通过以下方式将 json 数据解析为站点对象列表:

列出 siteList = objectMapper.readValue(jp, new TypeReference>(){});

这非常有效。现在我想通过使用 ormlite(带有急切的foreignCollection)将所有这些数据(站点对象列表)存储在数据库中。为此,我正在尝试这样:

它将数据插入到 SITE 和 VISIT 表中。但是,当我尝试通过 SITE 表上的 queryForAll() 函数获取数据时,它返回一个 foreignCollection 对象(site.getVisits()),但它的大小为 0,尽管我设置了 eager=true。

我假设我在插入时做错了。请告诉我使用相同的模型类对象进行此插入的正确方法是什么。

0 投票
1 回答
3488 浏览

arraylist - 如何将 ORMLite 与包含其他对象的 ArrayLists 的对象一起使用?

我有一个具有非常复杂数据类型的 Android java 项目,包括其他复杂数据类型的 ArrayLists。我正在尝试使用 ORMLite (4.42) 将我的数据存储在数据库中。

我在 ArrayLists 和 ForeignCollection 之间转换时遇到了重大问题,有人能做到这一点吗?

我不希望与数据库持续同步,而是有一个保存整个结构的 save 方法和一个恢复整个方法的 read 方法。从数据库中恢复对象后,该对象通过接口发送,接收者需要一个 ArrayLists 而不是 orm lite ForeignCollections。

我的方法如下。对于每个 ArrayList,我都有一个互补的 ForeignCollection。在将对象存储到数据库之前,将 ArrayList 的内容复制到 ForeignCollection,当读回时,反之亦然。

当我从数据库中读出一个数据结构时,我希望确保整个结构被恢复,因为稍后,该对象将被发送给不知道 orm lite 包的用户,因此我设置了 eager = true。

我的复杂数据类型如下所示:

问题

在将帐户存储到数据库之前,我尝试执行以下操作。我希望将 ArrayList 中的对象复制到 ForeignCollection 并使用 Account 对象更新数据库。对象 myAccount 与数据库中的对象具有相同的 id,因此我希望更新该对象。

没运气。addAll 方法确实将订单直接写入数据库,因此我最终得到了所有订单的重复项,因为“addAll”添加并且不更新任何现有记录。

所以我尝试首先从数据库中删除所有订单,但再次没有运气:

对象不会从数据库中删除。我在groups.google.com 上读到(作者 Philip Fu),这是 ormlite 的一个“已知”问题,急切的 ForeignCollection 不能很好地与 removeAll() 或 clear() 配合使用。

是否有一种我错过的模式允许我使用 ormlite 框架处理包含复杂类型的 ArrayLists 的对象?

0 投票
1 回答
713 浏览

ormlite - 查询对象具有带有条件的外部集合

我正在学习使用你的 Android ORMLite 框架。

但是我遇到了一个问题,我尝试了很多方法来解决但都失败了。

例如。我有 2 个数据库类:

它要求数据库中的记录不被删除,它只是由deleteFlag列标记。

现在,我尝试查询所有具有“deleteFlag = false”的主题。每个科目都有“deleteFlag = false”的学生名单。

有没有办法使用 SubjectDao 查询???

或者我必须做两个步骤:

  1. 使用 SubjectDao 查询所有具有“deleteFlag = false”的主题;

  2. 在科目列表中循环,使用 StudentDao 查询该科目所有具有“deleteFlag = false”的学生。然后将学生列表设置为主题对象。

谢谢你的时间。

0 投票
1 回答
3138 浏览

android - 如何将原始类型(字符串)的集合存储到数据库中

我正在尝试使用 ORMLite 将我的类映射到 SQLite 数据库,但我无法存储 String 的集合我有这个错误:

这个错误是不言自明的,但是我应该如何存储字符串集合,我应该扩展 String 类并添加所需的注释来做到这一点?在字段的注释中,我添加了 datatype.serializable 但这也行不通。这是我遇到问题的班级:

有问题的领域是语言!