Java 使用Hibernate关系

Java 使用Hibernate关系,java,hibernate,Java,Hibernate,我在冬眠中工作。我有3个实体,这是它们之间的关系: 用户1->N订单1->N订单详细信息 如何在给定用户的特定订单的订单明细表中添加行 我知道如何在Orders表和Order Details表中添加新行,类似于: User user=(User)session.get(User.class, username); Order order=new Order(); OrderDetails orderDetails=new OrderDetails(); orderDetails.setAmoun

我在冬眠中工作。我有3个实体,这是它们之间的关系:

用户1->N订单1->N订单详细信息

如何在给定用户的特定订单的订单明细表中添加行

我知道如何在Orders表和Order Details表中添加新行,类似于:

User user=(User)session.get(User.class, username);
Order order=new Order();
OrderDetails orderDetails=new OrderDetails();
orderDetails.setAmount(1);
order.addOrderDetails(orderDetails);
user.addOrder(order);
session.save(user); 
transaction.commit();
这是正确的吗

但当我只想在表addOrderDetails中为给定用户添加特定订单的行时会发生什么?我可以这样做吗

List<Order> o=session.createCriteria(Order.class) 
.add( Restrictions.eq("idUser", User) );
o.get(0).addOrderDetails(orderDetails);
事实上,我不知道如何处理表Orders和Orders details,我应该从User表中执行吗?怎样使用用户表中的条件,我只能获得用户列表,但不能处理其他表


谢谢

如果您有表示您的关系的映射,您可以获得用户,并且用户将拥有一个集合或列表,其中包含Order类型的元素。然后您可以更新特定的顺序


您所描述的方法也是正确的,除了一些错误之外,例如,在获取列表的条件上调用列表。

似乎用户可能拥有大量资源,如果您从用户对象访问订单,可能会影响性能

// user.addOrder(order);
// session.save(user); 
order.setUser(user);
session.save(order);
此外,从用户类中删除orders属性将清理设计。但这同样取决于商业模式