双向OneToMany,无需使用mappingBy

时间:2018-10-15 03:30:16

标签: hibernate-mapping hibernate-onetomany

我已经使用休眠注释实现了双向OneToMany关联。我在互联网上看到了很多示例,并阅读到需要在关联的OneToMany端指定mappingBy属性。 (我一直在这里查看示例-https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/) 但是,我编写的不使用mapledBy属性的示例代码可以很好地工作。以下是我的代码:

@Entity
@Table(name="Cart")
public class Cart {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="name")
private String name;

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name="cart_id")
private List<Item> items;
//getters and setters
}

以下是Item类:

@Entity
@Table(name="Item")
public class Item {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="name")
private String name;

@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private Cart cart;
//getters and setters
}

以下代码保存数据:

public static void saveCart(Session session){
Transaction tx = session.beginTransaction();

    Cart c1 = new Cart();
    c1.setName("Cart 1");

    Item item1 = new Item();
    item1.setName("item1");

    Item item2 = new Item();
    item2.setName("item2");

    List<Item> items = new ArrayList<Item>();
    items.add(item1);
    items.add(item2);

    c1.setItems(items);

    session.save(c1);
    tx.commit();
}

此代码不使用mappingBy属性,并且可以正常工作,数据已正确保存在表中。那我的方法正确吗?在示例中 https://vladmihalcea.com/the-best-way-to-map-a-onetomany-association-with-jpa-and-hibernate/ appededBy属性与OneToMany注释一起使用,JoinColumn通过ManyToOne注释指定。

那么哪种方法正确/更好?

0 个答案:

没有答案