Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inheritance 用户类型,jpa和Play的继承问题!框架_Inheritance_Jpa_Playframework_Playframework 1.x - Fatal编程技术网

Inheritance 用户类型,jpa和Play的继承问题!框架

Inheritance 用户类型,jpa和Play的继承问题!框架,inheritance,jpa,playframework,playframework-1.x,Inheritance,Jpa,Playframework,Playframework 1.x,我试图在我的应用程序中为用户类型实现一个继承的结构 @Entity @Table(name="User_") // Need this since "User" is a reserved name in SQL Server @Inheritance(strategy=InheritanceType.JOINED) public class User extends Model { @Column(nullable=false,unique=true) public Stri

我试图在我的应用程序中为用户类型实现一个继承的结构

@Entity
@Table(name="User_") // Need this since "User" is a reserved name in SQL Server
@Inheritance(strategy=InheritanceType.JOINED)
public class User extends Model {

    @Column(nullable=false,unique=true)
    public String username;

    ...
}



执行此操作时,创建的
Employee
Client
表没有指向
User
表的外键,
User
表也没有指向
Employee
Client
表的外键。我怎样才能做到这一点

理想情况下,我想要一个
Employee.username
列,它是
用户的外键,这样我就可以在其他表中引用
Employee.username


我在玩!Framework 1.2.5和SQL Server 2005。

我认为您正在寻找以下内容:

另外,请注意,您应该实现一个鉴别器值


你可以在这里重温一下这个话题:

已经几天了,请回答我自己的问题

我问的第一个问题是:

执行此操作时,创建的Employee表和Client表没有指向User_uu表的任何外键,User_uuu表也没有指向Employee表或Client表的任何外键。我怎样才能做到这一点

这在评论中得到了回答,谢谢axtavt!原来,
id
是主键和外键


接下来,我在问题中写道:

理想情况下,我想要一个Employee.username列,它是用户的外键,这样其他表就可以引用Employee.username

并在评论中澄清/措辞为问题:

是否有任何方法可以将用户名作为字符串显示在
Employee
中?我希望能够在其他表上执行此操作:

我从来没有找到一个合适的答案,所以我只能使用默认值(使用数字id字段):


如果可以解决这个问题,我很乐意接受另一个答案。

您确定没有创建外键吗<代码>id
列应为外键。此外,您可以使用
@Table(name=“\”User\”)
(必须删除才能编辑注释)使用不带下划线的名称
@Table(name=“Users”)
用户不受限制。通过Azure SQL.axtavt检查,您是对的。仔细检查后,id为FK和PK。我没想到。是否有任何方法可以将用户名作为字符串显示在
Employee
中?我希望能够在其他表上执行此操作:
@ManyToOne@JoinColumn(name=“employee”,referencedColumnName=“username”)public employee employee另外,谢谢你们两位对表名的建议,都很有效!我以前尝试过实现
@DiscriminatorValue
@PrimaryKeyJoinColumn
,但它们似乎没有任何作用,所以我摆脱了它们。也许我做错了…谷歌搜索会为你找到一些两者都适用的例子。
@Entity
public class Employee extends User {
    ...
}
@Entity
public class Client extends User {
    ...
}
@ManyToOne
@JoinColumn(name="employee", referencedColumnName="username")
public Employee employee;
@ManyToOne
public Employee employee;