繁体   English   中英

播放框架-如何共享表格?

[英]Play Framework - How to share table?

我正在使用带有演变的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识别两个模型共享同一张桌子?

非常感谢,索拉诺

您必须正确设置继承,我专门在Github上演示了一个示例,

在样本中, Content模型是超类,请仔细查看那里使用的注释。

它由NewsPostVideo扩展,因此它们使用相同的表,并在需要时偶尔添加其他字段( videoPath Video模型中的videoPath

一些重要的技巧,可以帮助您节省时间:

  • 在区分项字段中使用单个非大写字母的名称,通常dtype可以。 否则,您将无法访问鉴别值。
  • 每个模型都必须声明自己的finder (根据Ebean的类型),因此还需要重复@Id字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM