最近上手play framework, 看来果然是连猴子都可以用它来编程,诸多优点不多说了,代码一共才2w+...
Model类继承了GenericModel类,很简单
@MappedSuperclass public class Model extends GenericModel { @Id @GeneratedValue public Long id; public Long getId() { return id; } @Override public Object _key() { return getId(); } }
增加了一个id,类型为Long,同时值产生方式没设置,默认为AUTO
我们定义一个类Employee,对应于mysql数据库中的employee_
@Entity @Table(name="employee_") public class Employee extends Model{ @Id @Column(name="ID_") public String userId; @Column(name="NAME_") public String name; }
在数据库中employee_开始只有两个字段,userId&name. 设置了主键为userId,最后生成的新列id全部为0。
不过为什么要重复定义Id,即@Id?如果不加会报错。
这时候play会在该表中生成新列id,且全为0.
#
如果这时候将@Id去掉
这时Employee.findAll()只会得到第一行数据,共Employee.count()个。
#
#
如果修改数据库中新生成的列id,使其自增,那么再次刷新就会出现数据库中id列从1开始自增的情况,不过貌似出现过一次从12开始自增。。。
#
如果用户自定义的类直接继承自GenericModel,则会强制让其定义一个@Id,否则会丢出异常