【发布时间】:2012-09-05 19:43:00
【问题描述】:
我正在尝试在我的应用程序中实现用户类型的继承结构。
@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;
...
}
@Entity
public class Employee extends User {
...
}
@Entity
public class Client extends User {
...
}
当我这样做时,创建的Employee 和Client 表没有User_ 表的任何外键,User_ 表也没有Employee 的任何外键或Client 表。我怎样才能做到这一点?
理想情况下,我想要一个Employee.username 列,它是User_ 的外键,所以我的其他表可以引用Employee.username。
我正在使用 Play!框架 1.2.5 和 SQL Server 2005。
【问题讨论】:
-
您确定没有创建外键吗?
id列应该是外键。另外,您可以使用@Table(name="\"User\"")。 -
(必须删除才能编辑评论)使用不带下划线的名称
@Table(name="Users")Users不受限制。使用 Azure SQL 检查。 -
axtavt,你是对的。仔细检查后,id 既是 FK 也是 PK。我没想到。有什么方法可以将用户名作为字符串显示在
Employee中?我希望能够在其他表上执行此操作:@ManyToOne @JoinColumn(name="employee", referencedColumnName="username") public Employee employee; -
另外,感谢你们两位对表名的建议,两者都有效!
标签: inheritance jpa playframework playframework-1.x