在没有@Inheritance的情况下将@ManyToOne休眠到父级?

时间:2018-10-09 14:07:12

标签: java spring hibernate

我有HotelManagerClient个实体,必须使用@ManyToOne@OneToOne({{1} },AddressContact等。

Person

让我们考虑-Hotel --Address --Contact -Manager --Person --Contact -Client --Address --Contact --Person 实体。它应该引用ContactHotelManager。在此示例类中,我仅引用了Client类(现在在我的应用程序中):

Hotel

要使@Entity public class Contact extends CommentedEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "hotel_id") private Hotel hotel; private String contactData; } 引用所有3个类,我可以将父类ContactHaveContact一起使用,并从中扩展@InheritanceHotel,{{1 }}。

接下来,我需要Manager引用ClientPerson,但不要引用Hotel。我将使用@Inheritance创建新的父类Manager,但是java不允许从两个类Client和Have HavePerson Person继承Client。我可以使用接口而不是超类,因为我可以在一个类上实现几个接口,但是Hibernate不会在接口字段上映射HaveContact

另一种选择是让所有类只有一个父对象,并在可以将属性引用到几个类的任何时候引用它。尽管这对我来说似乎很危险。

我发现了带有enter code here@ManyToOne的示例,但是我想对@Any这样的通用域对象拥有一个新功能-将它们放在单独的Maven库中。很少有微服务可以使用相同的@AnyMetDefCommentContact实体。如果我将它们放在库中,我将不知道在Address中提及它们的类的列表,例如

Person

最后一种方法是使Contact不是Hibernate可管理的实体,而只是POJO。创建将具有本机查询的DAO,从中获取数据以构造此类。因此,找到@MetaValue数据的方法将接受targetEntity = Hotel.class, value = "Hotel" Contact。这迫使我离开JPA查询和Spring String className接口的便捷方法。

如何使Long Id引用JpaRepositoryContactHotelManager引用ClientPerson并使ManagerClient能够存储在库(jar)中?

0 个答案:

没有答案