我使用Play Framework 2.3进行演进,我想在同一张桌子上使用两种不同的模型。问题是Play总是为两个模型生成两次相同的表,这会在应用脚本时出现问题。
也许我完全错了,我应该采用另一种方法,但现在我认为这是正确的方法。我必须将用户模型作为Json返回。经过身份验证的用户应该从表中获取所有字段,未经过身份验证的用户应该获得同一个表的限制版本。
我已经在网上搜索了解决方案,并没有帮助我解决这个问题。我尝试使用@MappedSuperClass,但这也没有用。
@Entity
@Table(name="users")
public class User extends Model
{
@Id
public Long id;
public Long userName;
}
@Entity
public class AuthUser extends User
{
public Long email;
}
以上引导Play来创建:
create table users (
id bigint auto_increment not null,
user_name varchar(255),
constraint pk_users primary key (id))
;
create table users (
id bigint auto_increment not null,
user_name varchar(255),
email varchar(255),
constraint pk_users primary key (id))
;
如何让Play识别两个模型共享同一个表?
非常感谢您提前, 索拉诺
答案 0 :(得分:0)
你必须正确设置继承,我专门为在Github上展示这个来创建了一个样本,
在示例中,Content model是超类,仔细查看那里使用的注释。
它由News,Post和Video进行了扩展,因此它们使用相同的表格,如果需要,偶尔会添加其他字段(例如视频中的videoPath
模型)
一些重要提示,有助于节省时间:
dtype
是可以的。否则,您在访问鉴别器值时会遇到麻烦。finder
(根据Ebean输入)所以它还需要重复@Id
字段