Articles of ORM

将自定义代码添加到greenDAO实体

我想为我的greenDAO实体添加一些自定义代码。 我看到有类似保护区的东西。 但我不喜欢将生成的类检入我的git存储库。 我想为此使用inheritance。 即我有一个实体User 。 所以我希望greenDAO生成一个名为UserBase的类。 我想通过User扩展并实现这样的方法: public String getFullName() { return this.first + ” ” + this.last; } first和last是托管属性。 但我不知道如何告诉greenDAO使用User类而不是生成的实体UserBase 。 有没有办法做到这一点?

如何使用GreenDao ORM库从Android中的Assets创建数据库

我正在使用GreenDao orm库来创建数据库,它与代码中的第一个创建数据库示例一起使用。 现在问题是我找不到任何文档或任何与数据库从资产文件夹复制到内存中数据库相关的内容。

ORMLite自定义数据包含多个列

假设我有一个名为Person的类,它通常使用ORMLite持久保存到db表中。 现在,我在Person类中有一个名为House的成员。 House类包含3个属性,并且永远不会存储到数据库中。 我想要的是每当Person被持久化时我想将House的3个字段存储到Person表中,分为3个不同的列。 因此Person表将具有: { person_name, person_contact, house_address, house_type, house_date } 。 最后3个字段将来自House对象。 我想我应该在House成员variables上使用DataPersister ,但这是否意味着它会将整个House对象写入一列? 我想将它分成Person表中的3列。 有人可以帮忙吗? 谢谢!

更新Android中ormlite数据库表中的所有列

我有以下数据库表对象: public class Goal { @DatabaseField(generatedId = true) private int id; @DatabaseField private String goal_title; @DatabaseField private String goal_desc; @DatabaseField private String goal_why; … } 我在这个表中添加了一些行,现在我想写一个查询来更新该表中一行的所有列。 我见过ORM的文档,无法知道如何编写此查询。 请帮我怎么写这个查询。

使用greendao for android的多对多编译错误

问题解决了! – 我在底部添加了我的解决方案。 我认为这是一个相当简单的问题,但我似乎无法在文档中find答案。 我正在尝试使用greendao为android建模多对多关系,但是在运行生成器项目后,我在主项目中遇到编译错误。 我的代码指定了关系和实体: Entity customer = schema.addEntity(“Customer”); customer.addIdProperty(); customer.addStringProperty(“firstName”).notNull(); customer.addStringProperty(“lastName”).notNull(); customer.addDateProperty(“birthDate”); customer.addStringProperty(“phoneNumber”); customer.addStringProperty(“address”); customer.addStringProperty(“email”); // Product Entity product= schema.addEntity(“Product”); product.addIdProperty(); product.addIntProperty(“colour”).notNull(); product.addIntProperty(“weight”).notNull(); // CustomerProduct Entity customerProduct = schema.addEntity(“CustomerProduct”); customerProduct.addIdProperty(); Property customerId = customerProduct.addLongProperty(“customerId”).notNull().getProperty(); customer.addToOne(customerProduct , customerId); ToMany customerProductToCustomers = customerProduct.addToMany(customer, customerId); customerProductToCustomers.setName(“customers”); Property productId = customerProduct.addLongProperty(“productId”).notNull().getProperty(); product.addToOne(customerProduct , productId); ToMany customerProductToProducts = […]

GreenDAO左加入

考虑我有一个模型:公司1 – N人 我想显示一个名单和公司名称的人员名单。 但并非每个人都有公司。 我要避免每次调用person.getCompany()产生一个新的SQL查询,所以我在考虑添加一个连接: QueryBuilder queryBuilder = session.getPersonDao().queryBuilder(); queryBuilder.join(PersonDao.Properties.CompanyId, Company.class); queryBuilder.list() 问题是我只得到公司的人,因为生成的查询使用的JOIN等同于INNER JOIN。 我想我还需要LEFT JOIN才能让没有公司的人得到。 现在看来GreenDAO似乎不支持LEFT JOIN。 有没有其他方法来做出请求而不进行原始查询?

领域:通过ID创建关系

假设我有几个领域对象(表),它们之间有很多连接,我还没有预先填充所有对象。 我希望能够通过他们的ID(主键)创建关系。 例如,我有一个JSON文件,其中一个对象具有另一个对象的id列表(不是实际的对象,尽管另一个对象已经存在于领域db中),我希望能够直接将这些对象填充到对象中而不需要首先查询它们。 怎么可能?

greendao字符串主键 – 如何使用

在greendao常见问题解答中,它说“从greenDAO开始,对String主键的支持有限。” http://greendao-orm.com/documentation/technical-faq/ 我找不到任何说明如何做到这一点。 我使用Guids作为服务器应用程序中的主键,并希望能够从Android设备远程生成新数据并将其上传回服务器。 android设备上的数据库是sqlite,使用greenDAO生成POJO和数据访问层。 当数据上传到服务器时,我使用Guids来避免主键冲突。 我将Guids存储为字符串。 在greendao网站上有一些建议说我应该创建一个包含字符串的辅助字段并仍然使用greendao所支持的长主键,但这意味着当我从服务器导入数据时,我必须重新连接所有数据库关系对于痛苦的应用程序。 如果可能的话,更愿意继续使用字符串主键。 谁能告诉我怎么做? 这是一些示例代码…… 在我的生成器中(为清晰起见,我删除了大部分字段): private static void addTables(Schema schema) { Entity unit = addUnit(schema); Entity forSale = addForSale(schema); Property unitIntId = forSale.addLongProperty(“unitIntId”).getProperty(); forSale.addToOne(unit, unitIntId); } private static Entity addForSale(Schema schema) { Entity thisEntity = schema.addEntity(“ForSale”); thisEntity.addIdProperty(); thisEntity.addStringProperty(“forSaleId”); thisEntity.addFloatProperty(“currentPriceSqFt”); thisEntity.addStringProperty(“unitId”); return thisEntity; } private static Entity addUnit(Schema schema) […]

Android GreenDao – 仅删除特定实体的缓存对象

我在我的Android应用程序中使用GreenDao ORM。 如此处所述,可以使用 DaoSession.clear(); 为了清除会话的所有缓存对象。 我的问题是:如何清除特定实体 (而不是全部)的缓存对象? 我怎样才能做到这一点 ?

Android OrmLite预填充数据库

是否可以使用OrmLite创建一个sql脚本文件,以便使用数据轻松填充数据库? 我做了一些搜索,无法想出任何容易的事情。 我知道我可以使用数据创建一些对象,我只是想找一个更干净的方法。 我正在考虑创建一个脚本文件,在加载时打开一个阅读器,并将每个文件作为原始SQL处理executeRaw()方法。 有什么想法吗?