标签: greendao

GreenDAO支持表之间的多种关系

我一直在尝试使用GreenDAO创建数据库模型.当我尝试在不同的表之间创建多个关系时,问题就出现了.

基本上,我有一张Message桌子,一张Conversation桌子和一张User桌子.

用户有一个消息列表,并且消息具有父对话.

我尝试编写此代码来创建数据库:

    private static void addUser(Schema schema) {
            user = schema.addEntity("User");
            userId = user.addIdProperty().getProperty();
            user.addStringProperty("facebookId").unique().index();

            user.addStringProperty("firstName");
            user.addStringProperty("lastName");
            user.addStringProperty("fullName");
            user.addStringProperty("photoUrl");
    }

    private static void addMessage(Schema schema) {
            message = schema.addEntity("Message");
            messageId = message.addIdProperty().getProperty();
            message.addStringProperty("messageId").primaryKey();

            message.addDateProperty("date");
            message.addStringProperty("content");
            message.addStringProperty("typeString");
    }

    private static void addConversation(Schema schema) {
          conversation = schema.addEntity("Conversation");
          conversation.addIdProperty();

          conversation.addStringProperty("conversationId");
          // REST OF THE CODE
    }

    private static void fakeRelationship(Schema schema) {
            Property author = message.addLongProperty("author").getProperty();
            Property parent = message.addLongProperty("parent").getProperty();

            message.addToOne(user, author);
            message.addToOne(conversation, parent); …
Run Code Online (Sandbox Code Playgroud)

android android-sqlite greendao

12
推荐指数
1
解决办法
3530
查看次数

使用GSON序列化时的Greendao实体不包含Generated JSON字符串中的相关实体

我有两个使用Greendao生成器生成的实体.这两个实体是医院和患者.医院和患者之间存在一对多的关系.因此,一家医院可以有多名患者,一名患者只能有一家医院.因此,医院将包含患者名单.

greendao Generator的代码是 - >

package com.myapp.generator;


import org.greenrobot.greendao.generator.DaoGenerator;
import org.greenrobot.greendao.generator.Entity;
import org.greenrobot.greendao.generator.Property;
import org.greenrobot.greendao.generator.Schema;
import org.greenrobot.greendao.generator.ToMany;



public class MyClass {
    public static void main(String[] args) throws Exception {
        Schema schema = new Schema(1, "com.example.mohit.greendaotest.db");
        Entity hospital = schema.addEntity("Hospital");
        hospital.addIdProperty().autoincrement();
        hospital.addStringProperty("Hospital_Name");

        Entity patient=schema.addEntity("Patient");
        patient.addIdProperty().autoincrement();
        patient.addStringProperty("Patient_Name");

        Property hospitalId = patient.addLongProperty("hospitalId").getProperty();

        // patient has a one assigned hospital
        patient.addToOne(hospital, hospitalId);

        // hospital has many patients
        ToMany hospitalToPatients = hospital.addToMany(patient, hospitalId);
        hospitalToPatients.setName("patients");



        DaoGenerator dg=new DaoGenerator();
        dg.generateAll(schema,"./app/src/main/java");



    }

}
Run Code Online (Sandbox Code Playgroud)

因此,在我的主要活动中,我创建了一个名为"Hospital 1"的医院对象和两个名为"Patient 1"和"Patient 2"的患者对象.现在这两名患者将"医院1"作为他们的相关医院.patient1.getHospital()将返回Hospital1对象,patient2.getHospital()也将返回Hospital1对象.Hospital1.getPatient()将返回包含patient1和patient2对象的患者列表.

我的活动代码是 …

android gson greendao

12
推荐指数
1
解决办法
962
查看次数

greendao:调试查询的方法?

有没有办法让greendao吐出查询进入Logcat?我只想安慰一切正常工作,这对于熟悉系统来说是一个很好的功能.

android greendao

11
推荐指数
1
解决办法
3620
查看次数

使用swagger与android数据库

我正在寻找使用Swagger与Android上的设备上数据库,理想情况下使用GreenDAO改造,但我愿意使用什么有效.

该应用程序将需要一个持久数据库,并与使用swagger的服务器同步/通信.我正在寻找方法来使用swagger的代码生成与设备上的数据库,而不是手动定义模型.

是否有一个swagger codegen库或项目将与Android ORM(最好是greendao)一起使用?我还没有找到任何东西,但看起来并没有太久.

否则,我将尝试为与DaoGenerator一起使用的模型制作/修改.mustache文件.它可能需要两个步骤来更新模型,但这比手动重新创建模型更容易.

也欢迎其他想法和建议!

sqlite android mustache swagger greendao

11
推荐指数
0
解决办法
473
查看次数

GreenDAO创建自动ID属性

有没有办法让DB以自动方式创建ID属性?

我想生成一些看起来像这样的东西:

Entity entity = schema.addEntity("MyEntity");
entity.addIdProperty().autoIncrement().primaryKey();
Run Code Online (Sandbox Code Playgroud)

这可能吗?

sqlite android greendao

10
推荐指数
1
解决办法
6018
查看次数

GreenDao freemaker.jar失踪了

我刚下载了GreenDao的新jar文件,以便为我正在构建的应用程序创建我的数据库.

在完成我的实体建模和它们之间的连接的所有过程之后,我尝试运行生成器项目,但是生成数据库的行出现了这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: freemarker/template/ObjectWrapper
    at com.glide.talk.glide.model.generator.Model.main(Model.java:29)
Caused by: java.lang.ClassNotFoundException: freemarker.template.ObjectWrapper
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

发生的行是:new DaoGenerator().generateAll(schema, src);我在buildpathlib文件夹中只有greendao-generator-1.3.0.jar文件.

任何想法或解决方案都会非常有帮助.

ps 是否可以使用版本1.2中的freemaker.jar?

编辑:目前,我从sourceforge下载了这个版本,我希望这实际上是我需要使用的.

android android-sqlite greendao

10
推荐指数
1
解决办法
4088
查看次数

greenDAO不在表中生成FOREIGN KEY(...)约束

当我创建如下所示的双向1:n关系时,生成器不对表使用任何FOREIGN KEY(...)约束.

entity customer = schema.addEntity("Customer");
customer.addIdProperty();
customer.addStringProperty("name").notNull();

Entity order = schema.addEntity("Order");
order.setTableName("ORDERS"); // "ORDER" is a reserved keyword
order.addIdProperty();
Property orderDate = order.addDateProperty("date").getProperty();
Property customerId = order.addLongProperty("customerId").notNull().getProperty();
order.addToOne(customer, customerId);

customer.addToMany(order, customerId);
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?是应该在表中生成FOREIGN KEY(...)约束还是仅在运行时通过代码强制执行?

sqlite android foreign-keys greendao

10
推荐指数
1
解决办法
1930
查看次数

Android - 在GreenDao数据库中添加默认值

我想问一下,如果我在创建greenDao数据库时有可能添加默认值?

Example:
Property pictureIdProperty = user.addLongProperty("pictureId").getProperty();
Property thumbnailIdProperty = user.addLongProperty("thumbnailId").getProperty();
//and here I need something like this:
//thumbnailIdProperty.setDefault(-1); //there is possible to add 
user.addToOne(picture, pictureIdProperty);
user.addToOne(picture, thumbnailIdProperty, "thumbnail");
Run Code Online (Sandbox Code Playgroud)

当我使用数据库和这个表时,我不需要在创建此模型时始终添加默认值.

android greendao

9
推荐指数
1
解决办法
4989
查看次数

GreenDA与Sqlcipher集成示例

我使用GreenDAO设置了一个新项目,能够使用DaoGenerator使用ExampleDAO生成.一切正常.

我还在android资源文件夹中提供了一个预先填充的sqlite数据库,在app运行时,它被复制到android数据库系统路径.

现在我想与SqlCipher集成,以加密我的数据库...如果有人可以帮助或提供示例应用程序,那将是一个很大的帮助.

android sqlcipher greendao

9
推荐指数
1
解决办法
3252
查看次数

将Green DAO与内容提供商一起使用

我打算GreenDAO在我的项目中使用.我已经通过创建测试项目来测试它.但是,我有几个要求,我需要完成.

  1. 我的应用程序的数据库将被加密.为此,我们计划使用SQLCipher.我找到了这个链接.我正在研究它,但有兴趣知道原始的GreenDAO项目有什么可用.

  2. 由于我的应用程序将数据与服务器同步,我将使用SyncAdapter,因为我不想自己完成所有的重量级操作,这已经由Android框架完成.但它需要Content Provider合作.那么,我如何使用GreenDAO Content Provider.

更新2

我的项目有七个实体.我用过addContentProvider()实体.并生成七个不同的内容提供商.有没有办法在单个内容提供商中拥有所有sqlite表?

database orm android android-sqlite greendao

9
推荐指数
1
解决办法
4256
查看次数