假设有一间花店的花束种类固定

class FlowerShop{
 Bouquet[] bouquets;
 }


花束花很少

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


花有一些固定的属性

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}


我不太确定第三张桌子,只有一间花店。
我想我需要选择所有花束对象并以编程方式从花束中创建FlowerShop对象。我可以休眠来创建FlowerShop对象吗?

最佳答案

您只能创建花表。

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


对于“花束”,您将创建一个枚举而不是一个表。因此,当您要获取花束的所有花朵时,将与某个花束对应的Enum放在flowers查询的WHERE子句中。只有一家花店吗?因此,您将以编程方式创建它,并且该对象将由花朵列表组成,其中每个列表代表一种花束(花束的种类将在BouquetEnum上)。

我猜似乎是您的选择1。

关于java - 用于多对一映射的 hibernate 设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30698399/

10-10 07:30