(1)第一个问题案例:在开发态下,play框架会自动根据实体信息建表,如果是有一堆人在同一个数据库上开发项目,那么不可避免的会遇到一个问题:假设A猿删减了实体中的属性,提交版本,而其他猿均未更新代码,那么,其他程序猿在调试时,总会将已删除的字段加上,从而导致A猿代码出错。这个问题就必须让大家一起更新实体代码了,这是一个比较麻烦的事情,没有什么特别简洁的解决办法。
(2)实体字段的属性不要用int、double等来定义,而要使用Integer、Double对象。如果不这么做,在这些值为空的时候,赋值之类的操作都会导致程序出错。例如前后端在用JSON传值时,JSON传输时习惯将null略过,不做序列化,这样就经常导致出现null值。
(3)创建一对多、多对多的实体时,切记只能用在较简单的逻辑上,不要用在复杂的逻辑上。否则容易出现互相嵌套引用的情况。就像tree一样,每个节点都含有父级节点对象,也含有子级节点对象,那么这类对象就无法做序列化处理,因为存在这类互相引用的情况。一些大型的项目,不易采用一对多、多对一的方式,这是目前我的想法,也可能这个想法是错的,留待以后实践检验吧。
(4)最近在用原生态SQL时,发现一个关于in的问题,例如 select *,*,* from table where id in (0?),如果参数为一串 '1','2','3' 时,这时就需要直接拼接SQL语句,用一个String来存'1','2','3'是查不到数据的。汗···这个结果让人很难接受,不管我怎么测试,都是这个结果。OK,只好这样照做了,咱还是从了这个框架吧!