重新编译发现一个很奇怪的现象,表名和类名中一个是小写,一个是大写,error

重新编译发现一个很奇怪的现象,表名和类名中一个是小写,一个是大写,error

blob.png

mode生成后:

blob.png

blob.png

blob.png

表名是: reeshi_industrylist(l是小写)

base写文件名为**List.java(大写)--------文件中确是小写class  ***list

_MappingKit中确采用的是小写  ***list

最后导致编译不成功

blob.png



评论区

peterpeter

2018-04-18 09:47

我重装eclipse重新从GIT拉下代码也不行,问题还存在,不知道哪里有BUG,这个问题以前没有,确认不是我程序的问题

peterpeter

2018-04-18 09:49

代码生成的mode的base文件就有问题,文件名和文件中发现类名都不一样,难道要改base文件?

JFinal

2018-04-18 11:15

@peterpeter 这个问题从来没有碰到过,我直觉上感觉这个是不可能出现的,因为 base model 的类名与文件名是通过同一个变量去生成的

同一个变量,先是生成类名,然后再生成文件名,要大写就会全部大写,要小写就会全部小写

会不是会是你自己做过扩展,扩展代码写得有问题?

在你机器上要找到问题很容易,单步调试一下 BaseModelGenerator 这个类分分钟就知道了,里面有很明确的地方去生成类名与文件名

记得搞定后回来反馈一下

刘方杰

2018-04-18 11:16

会不会表名改过大小写,Git在windows上是大小写不敏感的(文件名大小写修改Git会认为没有变更),如果你开始用的表名是大写,生成后提交代码,后来表名改成小写再生成提交。可能会导致你这个问题,你可以git log -- industrylist路径 看看提交记录。

peterpeter

2018-04-18 11:18

/model/base/BaseIndustryList.java: BaseIndustrylist> 这个问题

peterpeter

2018-04-18 11:19

@刘方杰 我记得是表名改过大小写,我也怀疑是GIT的缓存或别的问题

刘方杰

2018-04-18 11:21

如果改过大小写基本就没跑了,把这个表的model删除了,然后提交,然后重新生成再提交。

peterpeter

2018-04-18 11:25

@刘方杰 把base的java也删了,然后涉及到这个类的先隐藏?

peterpeter

2018-04-18 11:26

那很多代码也要删呀。。。

刘方杰

2018-04-18 11:27

只删这一个就可以,删除后提交,可以先不管编译的问题,这样操作为了让git把正确的文件名记录到版本中。

JFinal

2018-04-18 11:40

我在我本地将一个表名改名为 reeshi_industrylist,重新生成了一次,一点问题都没有

你单步调试一下吧

peterpeter

2018-04-18 12:13

@JFinal 找到问题了,以前的表名是industrlist,后来改成**List了,好像没重新生产,数据库是不区分表名大小写的, 现在删除base类和重新弄,表名改成**list,就没事了, 但是非常奇怪的之前的错乱

peterpeter

2018-04-18 12:26

把表名改成大写后,重启数据库,表名他又改回小写了,他是不区分大小写的,所以造成了混乱

JFinal

2018-04-18 12:57

Model 如果存在的话,生成器再次运行时不会生成 Model,而 BaseModel、MappingKit 无论是否存在,只要重新运行生成器都会无条件覆盖

因此,当你前面生成的 Model 是小写,但你改了数据库变大写并重新生成,BaseModel、MappingKit 都是重新生成的大写,而 Model 还是前面生成的没变过,必然会出现这个问题

建议将表名改成:reeshi_industry_list,也就是在 "list" 加个下划线。 mysql 会自动将表名转成小写,所以 jfinal 从来都是建议 mysql 下表名全用小写,单词之间用下划线分隔

这种问题没必要折腾,全小写、加下划线秒秒钟解决

热门反馈

扫码入社