Hibernate设计用于多对一映射

时间:2015-06-07 20:58:25

标签: java mysql database hibernate orm

一个花店有固定类型的花束

class FlowerShop{
 Bouquet[] bouquets;
 }

花束很少类型的花

 class Bouquet{
  int bouquetId;
  List<Flower> flowers;
   }

Flower有一些固定的属性

class Flower{
  String name;
  ColorEnum color;
  int flowerId;
  int bouquetId;
   ... //other properties
  }

实现这一目标的合适的桌面设计是什么?

选项1 :由于Bouquet类只有bouquetId,因此只有一个表

 Flowers {flowerId,bouquetId,name,color,etc,etc..}

在这里,我将不得不迭代花卉对象并使用地图bouquetId->List<Flower> 在此之后,我需要构建每个bouquetId的Bouquet对象 然后使用花束对象数组构建FlowerShop

选项2:

Flowers    {flowerId,name,color,etc,etc} 
Bouquets   {bouquetId,flowerId} 
FlowerShop {bouquetId}     

我不太确定第3张桌子。只有一家花店。 我想我需要选择所有花束对象并以编程方式从花束中创建FlowerShop对象。我可以通过hibernate创建FlowerShop对象吗?

1 个答案:

答案 0 :(得分:0)

您只能创建Flower表。

Flowers {flowerId,BouquetEnum_name,name,color,etc,etc} 

对于Bouquets,您将创建一个Enum而不是一个表。因此,当你想得到花束的所有花朵时,你会将对应于某些花束的Enum放在花朵查询的WHERE子句中。那里只有一家花店吗?因此,您将以编程方式创建它,对象将由花卉列表组成,其中每个列表代表一种花束(花束的种类将在BouquetEnum上)。

我猜它似乎是你的选择1。