更新
首先,您提到要使用ORM提供的所有功能。如果是这种情况,则需要使用Hibernate友好的模式。JPA持久性API和特定于Hibernate的API中都有可用的批注,使您可以更轻松地使用“旧版”数据库。但是,如果您想完全正确地使用Hibernate,则必须根据Hibernate的期望来设计架构。
在这种情况下,您可以通过使用联接公式而不是关系的联接列来执行您要的操作。连接公式是有效的SQL片段(可能会降低可移植性)。在下面的示例中,我省略了实际的SQL。
public class Person { ... @oneToMany @JoinFormula("sql fragment") private List<Department> departments; ...}public class Department { ... @oneToMany @JoinFormula("sql fragment") private List<Person> people; ...}您还应该考虑将代码视为Hibernate对象:
@Embeddablepublic class Code { ... @Column(nullable = false, length = 20) private String pre; ...}Hibernate持久性上下文和行映射过程可以有效地管理实体关系中的代码,而不仅仅是字符串。
最后,考虑将人与部门之间的关系实际映射为架构中的联接表。然后,您就可以利用
@ManyToMany和
@JoinTable注释在实体中进行实际的基于架构的关系。



