私の質問に動作していない理由:@OneToManyアノテーションが
私はINVENTORYテーブルでSTORE_IDとBOOK_IDを保存したいが、なぜInventoryテーブルでSTORE_ID店?私はJPAで新しくなったので、INVENTORYテーブルにSTORE_IDストアのために何をするか教えてください。
1.Book
@Entity
@Table(name="book")
public class Book implements Serializable {
@Id
@Column(name="book_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String isbn;
private String title;
private Date publishedOn;
private Double price;
private int version = -1;
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="book")
Inventory inventoryRecords = new Inventory();
2.Inventory
@Entity
@Table(name="inventory")
public class Inventory implements Serializable {
/**
*
*/
@Id
@Column(name="INVENTORY_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToOne
@JoinColumn(name="book_id")
private Book book;
@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="STORE_ID")
private Set<Store> stores = new HashSet<Store>();
private Integer quantity;
3.Store
@Entity
@Table(name="store")
public class Store implements Serializable {
@Id
@Column(name="STORE_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name="NickName")
private String nickName;
4.Inメイン
Book b = new Book();
b.setTitle("abc");
b.setIsbn("abc");
Inventory i = new Inventory();
i.setBook(b);
b.setInventoryRecords(i);
Store s = new Store();
s.setNickName("yyynn6");
i.getStores().add(s);
entitymanager.persist(b);
OUTPUT=
Hibernate: insert into book (isbn, price, publishedOn, title, version) values (?, ?, ?, ?, ?)
Hibernate: insert into inventory (book_id, quantity) values (?, ?)
Hibernate: insert into store (NickName) values (?)
あなたの提案に感謝しますが、あなたの提案が私のケースでは機能していない、私は3つのクラスの本、在庫と店を持っています。私はBookのみを永続化し、Book_IDとStore_IDを持つそれぞれのテーブル+インベントリテーブルですべてのデータを保存したいと考えています。 @manyToOneをマップしたStore Classで試してみましたが、うまくいきませんでした。 – prashant