play framework Model 和 GenericModel 分析

夏福的猎鹿帽 posted @ 2013年7月30日 15:54 in play framework with tags jpa hibernate , 2720 阅读

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

 

blog comments powered by Disqus