レンジャーGREF:
例えば、私は、テーブルブック(ID、タイトル、themeId、authorId)、テーブルの作者(ID、名前)とテーブルのテーマ(ID、名前)でデータベースを持っています。私は正確にデータベースのようにエンティティを作成する必要があります私は、知らない(そして私が参加したクエリに問題があります):
class Book {
private id;
String title;
int bookThemeId;
int bookAuthorId;
}
または、このようなものを作成します。
class Book {
private id;
String title;
BookTheme bookTheme;
Author bookAuthor;
}
authorIdまたはthemeIdがnull(それは可能性がある)と、一般的にDAOから取得に問題がある場合、私は唯一の図書リスト( - フィールドnullで、かつブックエンティティのための非常にかさばるビルダーの問題)を取得したい場合は、2番目のケースでは、私は、問題が発生します。
パトリック・サンタナ:
より多くのオブジェクトが向いているので、私は第二の選択肢となるだろう。あなたが最初のオプションで行くならば、あなたは詳細を取得する2番目のクエリを実行する必要があります。
@Entity
@Table(name = "books")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
//...
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "theme_id", referencedColumnName = "id")
private BookTheme bookTheme;
// ... getters and setters
}
フィールドは、右に作成されていないとき、あなたのIDはnullになりますか?例えば、それはデータベースに保存されるとき、それは常にIDを持つことになります。