1

アプリケーションにユーザータイプの継承された構造を実装しようとしています。

@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とテーブルにはテーブルへの外部キーがなく、テーブルにはまたはテーブルへの外部キーがありません。どうすればこれを実現できますか?ClientUser_User_EmployeeClient

理想的にEmployee.usernameは、の外部キーである列が必要なUser_ので、他のテーブルに。への参照を含めることができますEmployee.username

Playを使用しています!フレームワーク1.2.5およびSQLServer2005。

4

2 に答える 2

0

私はあなたがこれを探していると思います:http://docs.oracle.com/javaee/5/api/javax/persistence/PrimaryKeyJoinColumn.html

また、識別子の値を実装する必要があることに注意してください。

ここでトピックを確認できます: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e1168

于 2012-09-06T07:07:25.290 に答える
0

数日経ちましたので、私自身の質問に答えます。

私が最初に尋ねた質問は次のとおりです。

これを行うと、作成されるEmployeeテーブルとClientテーブルには、User_テーブルへの外部キーがなく、User_テーブルにはEmployeeテーブルまたはClientテーブルへの外部キーがありません。どうすればこれを実現できますか?

これはコメントで答えられました、axtavtに感謝します!それがid主キー外部キーであることがわかります。


次に、私は私の質問でこれを書きました:

理想的には、User_の外部キーであるEmployee.username列が必要なので、他のテーブルにEmployee.usernameへの参照を含めることができます。

そしてコメントの質問として明確にされた/言葉で表現された:

文字列としてユーザー名を実際に表示する方法はありEmployeeますか?他のテーブルでこれを実行できるようにしたい:

@ManyToOne
@JoinColumn(name="employee", referencedColumnName="username")
public Employee employee;

私はこれに対する適切な答えを見つけることができなかったので、デフォルトでやり遂げています(数値IDフィールドを使用):

@ManyToOne
public Employee employee;

これが解決できれば、別の回答を喜んで受け入れます。

于 2012-09-13T19:07:44.447 に答える