2017-07-31 7 views
0

私はScalaで宣言された以下のHibernateテーブルを持っています。 2つのキー(ではなく、の2つの複合キーがあります)があります。私は@Idアノテーションを使って各キーを識別していますが、複数の属性を持つキーが1つの場合に使用するアノテーションのようです。 2つの独立したキーがあることをHibernateに伝えるには?Hibernateテーブルで2つのキーを定義する方法は?

@Entity 
@Table(name = "dates") 
class Dates { 

    @Id 
    var sk: Int = _ 

    @Id 
    var theDate: LocalDate = _ 

    @Column(name = "is_holiday") 
    var isHoliday: Int = _ 

    var year: Int = _ 

    var month: Int = _ 

    var day: Int = _   
} 
+1

これは意味をなさない。 '@ Id 'で注釈された属性は、エンティティの一意の識別子であり、複数のものは存在してはいけません。問題のある特定のユースケースを提供してください。 – galovics

+0

ユースケースは質問に記載されているテーブルです。私は日付のテーブルを持っています。ここで、キーは日付そのものですが、日付を持つ他のテーブルに外部キーとして保存するのに使う代理キーです。 – ps0604

+0

しかし、あなたのコメント '@ Id 'からわかるように、テーブルに定義されているPRIMARY KEYを反映しているので、2つのテーブルを持つことはできません。 2番目はインデックスになる可能性があります。 – ps0604

答えて

0

あなたは@IdClass注釈とあなたの複合主キーに対応するコンテナクラスの宣言が欠落しているように見えます。詳細については、Configuring a JPA Entity Primary Keyの例7-4と7-5を参照してください。

関連する問題