使用Hibernate插入数据的最佳方法是什么?作为一个例子,我不会在订单表中插入新订单。它与Item有一对多的关系。当我们在Object方式上考虑它时,Order对象具有Item集合。我是否需要填充Item对象集合中的所有变量(itemName,ItemId,ItemSize ,,)? 如果你能使用hibernate session在插入Order上给我代码示例..
答案 0 :(得分:2)
@Entity
@Table(name="orders")
class Order {
@Id @GeneratedId private Long id;
@OneToMany(mappedBy="order")
private List<Item> items;
public Order() {
items = new ArrayList<Item>();
}
public void addItem(Item item) {
if (item != null)
items.add(item);
}
/* getters setters */
}
和item:
@Entity
@Table(name="items")
class Item {
@Id @GeneratedId private Long id;
@ManyToOne
private Order order;
/* getters setters */
}
查询:
Query query = query.createQuery("from Order o where o.id=:id");
query.setLong("id", 1234L);
List<Order> orders = query.list();
要插入可能是这样的:
Session session = null;
try {
session = HibernateUtils.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
Order order = new Order();
Item item = new Item();
item.setQuantity(1);
/* etc.. */
order.addItem(item);
item.setOrder(order);
session.save(item);
session.save(order);
tx.commit();
} finally {
if (session.isOpen())
session.close();
}
答案 1 :(得分:0)
通常你应该创建你的Item对象并设置对Order的引用,因为在一般情况下Item是关系的拥有方(假设是双向关联,你不想使用映射表)
除此之外,您能否提供更多关于您已经拥有的信息(特别是您的订单和项目实体)或您的问题究竟在哪里?