当前位置: 首页 > news >正文

GreenDao,clearIdentityScope报错Error:Execution failed for task ':app:compileDebugJavaWithJavac'. Com

首先是greendao的配置

GreenDao配置

在工程的build.grdle中,如下:

buildscript {
    
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

    allprojects {
        repositories {
            google()
            jcenter()
            mavenCentral ()
        }
    }

}

build.gradle(Module:app)中添加下面代码:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.administrator.myapplication"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }//butterKnife
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
    }
}

apply plugin: 'org.greenrobot.greendao'


greendao {
    schemaVersion 1//数据库版本号
    daoPackage 'com.aa'//设置DaoMaster、DaoSession、Dao包名
    targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
    //targetGenDirTest:设置生成单元测试目录
    //generateTests:设置自动生成单元测试用例
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

    //butterknife
    //动态申请权限
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex.rxjava2:rxjava:2.0.5'
    compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'
    implementation files('libs/jxl.jar')

    //greendao数据库
    compile 'org.greenrobot:greendao:3.2.0'

}

出现错误:

 

Error:(41, 22) 错误: 找不到符号
符号:   方法 clearIdentityScope()
位置: 类型为DaoConfig的变量 dataDaoConfig

Error:(185, 5) 错误: 方法不会覆盖或实现超类型的方法

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details

原因是你的greendao对应的包版本不一致,DaoMaster,DaoSession都是自动生成的,有报错,一般是jar包和依赖版本不一致。按照我上面的是可以的。

 

 

custom.png
GreenDao的基本配置就已经完成了,下面我们编写一个实体类。

实体类User

  @Entity
  public class User {   
        @Id(autoincrement = true)   
        private Long id;   
        private String name;   
        private int age;
}

相关注解说明:

  • 实体@Entity注解

  • schema:告知GreenDao当前实体属于哪个schema
    active:标记一个实体处于活跃状态,活动实体有更新、删除和刷新方法
    nameInDb:在数据库中使用的别名,默认使用的是实体的类名
    indexes:定义索引,可以跨越多个列
    createInDb:标记创建数据库表

工具类

package com.bestgo.callshow.db.greendao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import com.bestgo.callshow.bean.BlackInfoCallMIssedBean;
import com.bestgo.callshow.db.greendao.gen.BlackInfoCallMIssedBeanDao;
import com.bestgo.callshow.db.greendao.gen.DaoMaster;
import com.bestgo.callshow.db.greendao.gen.DaoSession;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

/**
 * 作者:jiuqunZhang on 2018/4/28 21:12
 * 邮箱:woshizhangjiqun@gmail.com
 */

public class DBManager {
    private final static String dbName = "test_db";
    private static DBManager mInstance;
    private DaoMaster.DevOpenHelper openHelper;
    private Context context;

    public DBManager(Context context) {
        this.context = context;
        openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
    }

    /**
     * 获取单例引用
     *
     * @param context
     * @return
     */
    public static DBManager getInstance(Context context) {
        if (mInstance == null) {
            synchronized (DBManager.class) {
                if (mInstance == null) {
                    mInstance = new DBManager(context);
                }
            }
        }
        return mInstance;
    }
    private SQLiteDatabase getReadableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getReadableDatabase();
        return db;
    }
    private SQLiteDatabase getWritableDatabase() {
        if (openHelper == null) {
            openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
        }
        SQLiteDatabase db = openHelper.getWritableDatabase();
        return db;
    }
    /**
     * 插入一条记录
     *
     * @param BlackInfoCallMIssedBean
     */
    public void insertUser(BlackInfoCallMIssedBean BlackInfoCallMIssedBean) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        userDao.insert(BlackInfoCallMIssedBean);
    }
    public void insertUserList(List<BlackInfoCallMIssedBean> BlackInfoCallMIssedBeans) {
        if (BlackInfoCallMIssedBeans == null || BlackInfoCallMIssedBeans.isEmpty()) {
            return;
        }
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        userDao.insertInTx(BlackInfoCallMIssedBeans);
    }
    public void deleteUser(BlackInfoCallMIssedBean BlackInfoCallMIssedBean) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        userDao.queryBuilder()
                .where(BlackInfoCallMIssedBeanDao.Properties.PhoneNumber.eq(BlackInfoCallMIssedBean.getPhoneNumber()))
                .buildDelete()
                .executeDeleteWithoutDetachingEntities();
    }
    public void updateUser(BlackInfoCallMIssedBean BlackInfoCallMIssedBean) {
        DaoMaster daoMaster = new DaoMaster(getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        userDao.update(BlackInfoCallMIssedBean);
    }
    public List<BlackInfoCallMIssedBean> queryUserList() {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        QueryBuilder<BlackInfoCallMIssedBean> qb = userDao.queryBuilder().orderDesc(BlackInfoCallMIssedBeanDao.Properties.PhoneNumber);
        List<BlackInfoCallMIssedBean> list = qb.list();
        return list;
    }


    /**
     * 查询用户列表
     */
    public List<BlackInfoCallMIssedBean> queryUserList(String path) {
        DaoMaster daoMaster = new DaoMaster(getReadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        BlackInfoCallMIssedBeanDao userDao = daoSession.getBlackInfoCallMIssedBeanDao();
        QueryBuilder<BlackInfoCallMIssedBean> qb = userDao.queryBuilder();
        qb.where(BlackInfoCallMIssedBeanDao.Properties.PhoneNumber.gt(path)).orderAsc(BlackInfoCallMIssedBeanDao.Properties.PhoneNumber);
        List<BlackInfoCallMIssedBean> list = qb.list();
        return list;
    }

}

这是有关增删改查的管理办法。

在实体类中这样用:

DBManager.getInstance(getApplicationContext()).insertUser(blackInfoCallMIssedBean);
其他的语句类似。

实体类的生成比较简单,就是如下:

 

@Entity
public class BlackInfoBean {
    /**
     * 自增长的id
     */
    @Id
    private Long id;
    /**
     * 联系人id,相当于姓名
     */
    private long contactsId;
    /**
     * 联系人姓名
     */
    private String name;
    /**
     * 电话号码
     */
    private String phoneNumber;

类似这个,@Entity,@Id就是GreeenDao的标志。写完属性之后就直接点击Make Project。就是自动的生成Get,Set方法还有toString。

每个人应用的场景不一样,欢迎留言, 一起 讨论。

相关文章:

  • Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. Conflict with dependency ‘com.andr
  • Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.suppor
  • android interface,activity之间使用接口传值。android 开发 interface在哪里写接口在哪调用
  • Android 获取本机号码
  • parse,Object和对象区别JSON对象和字符串转化StringBuilder 使用Split() 截取字符串数组String.AppendString怎么把以逗号分分割的字符串数据
  • TabLayout app:tabMode和app: tabGravity配合使用效果对比
  • Android 开发 tablayout 字体加粗 ,简便的手法:
  • android全透明背景色: android 开发 背景常用透明度
  • Android开发使用shape定义按钮背景绘制,带有渐变的按钮背景 带有渐变的动态按钮背景  gradient selector stroke android:type
  • Android获取系统时间不同方式 ,final关键字,static与final区别, static和final一起使用
  • android 开发修改switch开关颜色
  • 小米获取 版本22 手机存储权限拿不到
  • 自定义tablayout中的tab样式
  • Android 开发获取通知栏权限时会出现两个应用图标
  • GreenDao 3.0 中insert insertOrReplace save 区别
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Android单元测试 - 几个重要问题
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS 专业技巧
  • java 多线程基础, 我觉得还是有必要看看的
  • JavaScript 奇技淫巧
  • Javascript 原型链
  • Python连接Oracle
  • react 代码优化(一) ——事件处理
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深度学习在携程攻略社区的应用
  • Python 之网络式编程
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #微信小程序:微信小程序常见的配置传旨
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (C)一些题4
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (全注解开发)学习Spring-MVC的第三天
  • (译) 函数式 JS #1:简介
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bashrc在哪里,alias妙用
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net 反编译_.net反编译的相关问题
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • ::
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • []error LNK2001: unresolved external symbol _m
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [AIGC 大数据基础]hive浅谈
  • [Android 13]Input系列--获取触摸窗口
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成