GreenDao报Can't replace method in ...\mvp\model\BrandModel.java:120 with generated version.错误的解决办法
来源:互联网 发布:全国医院数据库 编辑:程序博客网 时间:2024/06/08 16:44
新项目需要用到数据库,之前一直用的是 ORMLite 框架,但是突然想用一下别的数据库,就想到了 GreenDao ,诚然 GreenDao 确实比 ORMLite 快捷简便,但不得不说 GreenDao 的坑也确实很多。
按照网上的教程(其实百度的教程基本都是千篇一律翻译的官网的),捣鼓了半天最后卡在了下面这个错误上面:
Can't replace method in ...\mvp\model\BrandModel.java:120 with generated version. If you would like to keep it, it should be explicitly marked with @Keep annotation. Otherwise please mark it with @Generated annotation
上官网查看了一下教程,虽然这个错误也被官网重点标出来了,但是上面说的报错原因和解决办法让我看的有点不明觉厉,好吧,有事找度娘/谷爸,然后......点开一篇(翻译的官网的),再点开一篇(翻译官网的),哎哟我这暴脾气,我就不信了,再再点开一篇(还是翻译官网的)。。。好吧,请允许我蹲一会墙角。。。
既然网上的解决办法都是翻译的官网的,而官网的解决办法我又看的不明觉厉,怎么办呢?我再去蹲一会墙角。。。就在我在官网一筹莫展的时候,不知道怎么点出了一片介绍(确实我也不知道点击了官网哪个链接进入的),然后看到介绍说 Bean 类在工程 Make 生成 Dao 的时候会自动帮助生成 get/set 方法,那么我就试试把我自己使用 GsonFormat 生成的 get/set 方法删掉然后再 Make,果然,这次确实编译通过,成功生成 Dao 文件了,并且 GreenDao 还自动为我们的 Bean 类生成了 get/set 方法。为什么会这样呢?我们对比一下成功前后两个Bean文件:
生成Dao失败的Bean(使用 GsonFormat 自动生成的Bean):
@Entitypublic class X1Model implements Serializable { @Id private long id; @ToMany(referencedJoinProperty = "xx") private List<X2Model> list; public long getId() {return id; } public void setId(long id) {this.id = id; } public List<X2Model> getList() { return list; } public void setList(List<X2Model> list) {this.list = list; }}
生成Dao成功GreenDao自动为我们添加get/set方法之后的Bean:
@Entitypublic class X1Model implements Serializable { @Id private long id; @ToMany(referencedJoinProperty = "xx") private List<X2Model> list; public long getId() {return id; } public void setId(long id) {this.id = id } @Generated(hash = 717937950) public List<X2Model> getList() { 。。。省略自动生成的数据库代码。。。 return list; }}
我发现,我在上面关联有外表 X2Model ,但是第二个 Bean 比第一个 Bean 少了一个 set 方法,即说明我们所关联的外表不可以在Bean里面直接改变(set 方法)它的值,也是第一个 Bean 总是报错的原因。所以,省时省力的解决办法就是需要生成 Dao 的 Bean 类就别写 set/get 方法了,GreenDao 会为我们自动生成。
另外还有一个坑就是 Bean 只能是 Java,使用 Kotlin 的话也无法生成 Dao 文件(别问我为什么知道,说多了都是泪)。
阅读全文
0 0
- GreenDao报Can't replace method in ...\mvp\model\BrandModel.java:120 with generated version.错误的解决办法
- Bugzilla报Can't locate object method "_QUIT" ,解决办法
- GMF提示Can't find genClass for class '...' in package ...model的解决办法
- Navicat连接Mysql报1042- Can't get hostname for your address错误的解决办法
- python2,socket多进程的错误pickle.PicklingError: Can't pickle <built-in method recvfrom_into of _socket.soc
- PHP报错:遇到Can't use method return value in write context
- Java调用Kettle时,报Can't run transformation due to plugin missing错误的解决方法
- "Can't use method return value in write context"错误提示
- PHP错误Can't use method return value in write context
- Can't locate CPAN.pm in @INC的解决办法
- Can't locate Switch.pm in @INC 的解决办法
- MTK编译错误 Can't call method "version" on an undefined value at tools\chk_env.pl line 387
- java 代码细节(Replace Method with Method Object)
- 【cocos2d-x 报错异常集】运行安卓虚拟机的时候出现了emulator: ERROR: Can't find 'Linux version ' string in kernel image fi
- Replace Matches with Replacements Generated in Code (用函数作为替换体来替换匹配)
- Replace Method with Method Object
- svnserve: Can’t bind server socket: Address already in use报错解决办法
- can't link with a main executable file for architecture armv7错误解决办法
- curl发送请求简单实践
- MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)
- Boost 随机数库的使用
- jetson 使用技巧
- 阿里云Elasticsearch的X-Pack:机器学习、安全保障和可视化
- GreenDao报Can't replace method in ...\mvp\model\BrandModel.java:120 with generated version.错误的解决办法
- Java获取当前时间及String、datetime、date相互转化
- No Identifier specified for entity
- 标准的json格式
- Mvp+Retrofit2+RxJava2 项目中使用的简洁封装
- 索引的分类和简单介绍
- Java 多线程理解(一) 多线程技能
- Python代码前几行声明是什么
- mysql定时备份资料