假设有一间花店的花束种类固定
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/