依赖于其他字段的 JPA 实体关系



我的数据库有一个表,它表示一堆其他事物之间的公共字段。因此,假设有一个像Vehicle这样的表,然后Vehicle具有VIN,颜色,类型...

然后还有其他表,如CarTruck,当Vehicle上的"类型"是"car"时,我们想查看Car表以查找其他属性。也许是关于燃油效率和乘客数量的东西。当类型是"卡车"时,我们想知道关于卡车的事情,比如负载能力或其他什么。

你如何模拟这样的东西?您是否将Vehicle嵌入到所有其他类型中?有没有办法在"类型"字段中有条件地在表之间做@OneToOne

如果你想遵循真正的ORM方式,你可以使用MappedSuperClass或JoinedTable策略。但这是有代价的。这些策略还有其他开销,例如查询限制和每个查询的更多联接等。

如果对表进行非规范化,则可以使用数据过滤器策略(我认为仅支持休眠(。但是现在你在一个类中拥有所有内容,这可能是一个更大的问题。

由于您使用的是 REST,因此您可能希望迎合/api/vehicles/1(请纠正我(

对于此类场景,使用包含"类型"的"车辆"表更容易执行此操作。可以使用 jackson 序列化程序省略所有非 null 组件。因此,在汽车的情况下,车辆属性和汽车参数将进入,但卡车、公共汽车等上的空值将被省略。

最新更新