最近上手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,否则会丢出异常