Hibernate Mapping

时间:2013-11-12 16:48:22

标签: java hibernate hibernate-mapping

我在执行Hibernate Mapping时遇到了问题。方案如下:

  1. 有一个User类,其中包含用户名,名称,dateofbirth,图像以及与用户名为主键的用户相关的其他信息。
  2. 第二类是Product类,它具有产品ID和与主键作为产品密钥的产品相关的其他信息。
  3. 第三类是Order类,它有OrderId,OrderDate,Username-应该是foriegn键 - 引用User类用户名,最后是一组类型Product-因为一个订单可以有很多产品。
  4. 现在我希望Order类的主键作为复合键(OrderId,ProductID),此productID应该是Product Class的引用。

    我想创建的关系如下: 1.一个订单只能属于一个用户 2.一个订单可以有很多产品

    有人可以引导我如何去做吗?任何形式的帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

试试此链接http://www.javacodegeeks.com/2012/08/hibernate-composite-ids-with.html。这是一个复合键中多对一项的示例。

答案 1 :(得分:0)

我认为你很可能正在考虑类似的关系。您需求的不同之处在于您需要从Order / PurchaseOrder到产品/项目的一对多映射,而您不需要发货。

我的建议是:

  1. 创建双向一对多关系,包括用户和订单。双向的好处是您可以从订单对象访问用户对象,如果不需要,您可以保持从用户到订单的单向。
  2. 创建一对多关系,包括订单和产品。
  3. 将主键保持为OrderID,而不是按顺序组合键。您仍然可以从订单对象中获取产品列表,并从用户对象中获取订单对象。
  4. 做出此决定的重点在于您从哪个对象获取剩余对象。 使用ORM,您应该知道您将从哪个对象中获取休息,因此我的建议是基于您将User对象作为附加实体提供的假设,因此您可以获取订单列表(定义为set)并从特定订单中找出产品列表/集。

    如果您首先使用Order对象,则使用User创建双向。这样您就可以在一端找到产品列表/一组,而在另一端找到客户。

    对于ORM映射,请参阅Hibernate Mapping Examples.

    希望这澄清。