2017-07-21 7 views
0

ワン注:多くファイル埋め込み可能なクラスのIDを生成するには?

、埋め込み、それを維持しながら、私は@Idとそれに注釈を付けることはできませんので、どのように私は、ファイルにIDを割り当てることができますか?現在、Fileテーブルのidはnullです。

@Entity 
public class Note { 
    @Id 
    @GeneratedValue 
    @JsonProperty(value = "noteID", access = Access.READ_ONLY) 
    private Long id; 

    @ElementCollection 
    @CollectionTable(
      name = "FILE", 
      joinColumns = @JoinColumn(name = "NOTE_ID") 
    ) 
    List<File> files; 

} 

ファイル

@Embeddable 
public class File { 
    private Long id; 

    private String name; 

    private String contentType; 

    private String uri; 
} 
+0

なぜIDが必要なのですか?ちょうど1つを割り当てるのはどうですか? –

+0

メモの特定のファイルを取得/更新/削除する必要があるとき。手動で割り当てることも考えましたが、そのためには、アクセスを割り当ててロックする固有のIDを確保する必要があります。それは良い方法がある場合はクールだろう –

+0

彼らはIDがあり、あなたはそれらによってそれらを参照したい場合、なぜ彼らは埋め込み可能でしょうか? –

答えて

1

はちょうどそれ適切なエンティティにします。 @Embeddableは、値オブジェクト、つまりその値によって識別されるオブジェクトに便利です。しかし、あなたがidを必要とするので、これはあなたのシナリオでは当てはまりません。私たちの要件ごと

あなたの理由

、ファイルには、埋め込みを選択するためのノートコンテキスト内

存在し、有効ではありません。私はこのようなフレーズをインターネット上のあらゆる場所で見てきましたが、あなたはどんな状況でも@Embeddableを使用できます。 @EmbeddableFileインスタンスはNoteインスタンスに多かれ少なかれバインドされていないため、@Entityとなります。

関連する問題