Java Hibernate:多个FK关系
我有点难以定义Hibernate实体: 假设数据库中有以下两个表: (A)Java Hibernate:多个FK关系,java,hibernate,Java,Hibernate,我有点难以定义Hibernate实体: 假设数据库中有以下两个表: (A) 来自公司 公司 维娅公司 (B) 公司ID(PK) 描述 其中(A)的元素指向(B)的主键;因此,FKs和PK之间存在3种一一对应的关系。 我假设3个不同mappedBy条件的OneTONE语句不是正确的方法,mh?这是漫长的一天——我可能就是不明白;) 谢谢你的帮助 你当然可以通过一对一的关系做到这一点。在A类中有三个Company对象和相应的映射 如果我们能看到代码和hibernate映射,这会有所帮助。这是
- 来自公司
- 公司
- 维娅公司
- 公司ID(PK)
- 描述
谢谢你的帮助 你当然可以通过一对一的关系做到这一点。在A类中有三个Company对象和相应的映射
如果我们能看到代码和hibernate映射,这会有所帮助。这是实现类A的最简单方法,有3个指向类B的多通关系
@Entity
class ClassA {
//@ID
//private id;
@ManyToOne
private ClassB from;
@ManyToOne
private ClassB toCompany;
@ManyToOne
private ClassB viaCompany;
}
不起作用,因为每个实体都需要一个Id。您可以尝试通过使用组合Id(由三个关联组成)来克服这个问题,但我想实现由与其他实体的关联组成的Id会带来很多麻烦
@看
Hibernate提供的另一种方式是所谓的三元关联在本例中,您以三元m:n关系的形式对整个表A进行建模但这也是一项非常复杂的任务
@请参见如果我理解正确,您希望您的数据库如下所示:
tableA
- id
- fromCompanyId (references tableB.id)
- toCompanyId (references tableB.id)
- viaCompanyId (references tableB.id)
tableB
- id
- description
如果是这样的话,你当然可以拥有这个。您只需要覆盖关系的默认列名,以便每个关联都有自己的列名,而不是返回到默认名称,这将使三个关联具有相同的名称,从而导致问题
我真的不同意OneTONE,但我认为这是一个有意识的决定
见此:
这绝对是一个而不是多个吗?如果表A是一个发货表,那么表B中的一家公司能否只发货一件商品呢?非常感谢各位——现在几个小时的睡眠之后,我恢复了思考的能力;)为打扰你感到有点抱歉。桌子的结构确实如你所想。是的,一对一关系的概念来自应用程序场景。虽然有可能,例如fromCompany和viaCompany使用相同的ID,但我倾向于将它们视为两个语义不同的对象,因为公司本身在每个数据字段中扮演不同的角色……很难描述,也无法解释整个事件。但你肯定是对的,一般来说,一对多关系可能是更好的方式。