Java Hibernate-映射奇怪的多向关系(无外键)

Java Hibernate-映射奇怪的多向关系(无外键),java,database,hibernate,join,hibernate-mapping,Java,Database,Hibernate,Join,Hibernate Mapping,假设我有三张这样的桌子,而不是我的设计: 表“Foo”和“Bar”: *这里没什么特别的,它们只是两个带ID的表 表“注释”: 好的,这个“注释”表实际上是按名称和主键引用foo和baz表。这里绝对没有引用完整性。这不是我的设计 撇开免责声明不谈,在SQL中,联接类似于: select * from foo left join annotation on (other_table = 'foo' and other_id = foo_id) 我想使用带注释的Hibernate映射这种关系。恐怕

假设我有三张这样的桌子,而不是我的设计:

表“Foo”和“Bar”:

*这里没什么特别的,它们只是两个带ID的表

表“注释”:

好的,这个“注释”表实际上是按名称和主键引用foo和baz表。这里绝对没有引用完整性。这不是我的设计

撇开免责声明不谈,在SQL中,联接类似于:

select *
from foo
left join annotation
on (other_table = 'foo' and other_id = foo_id)
我想使用带注释的Hibernate映射这种关系。恐怕这是不可能的,但我想问问,你永远不知道。我的注释类如下所示:

@Entity
@Table(name = "ANNOTATION")
public class Annotation {

    @Id
    @Column(name = "ANNOTATION_ID")
    private Integer id;
    @Column(name = "ANNOTATION_text")
    private String text;
    @Column(name = "OTHER_TABLE")
    private Integer other_table;
    @Column(name = "OTHER_ID")
    private Integer other_id;

    // getters & setters

}
我该如何在Hibernate中设置一对多一Foo到多注释的映射

@Entity
@Table(name = "FOO")
public class Foo {

    @Id
    @Column(name = "FOO_ID")
    private Integer id;
    @OneToMany
    @Column // how would I configure this?
    private Collection<Annotation> annotations;

    // getters & setters

}

您可以将表添加到架构中吗?也许有一两个视图?@Boristespider如果这是最好的解决方案,我愿意接受建议,干杯。我认为有一些冬眠魔法是可以做到的——也许有一位大师会来演示。我建议使用视图将表拆分为两个具有更传统结构的表;您还可以在insert上添加触发器,以将另一个表值设置为正确的值。
@Entity
@Table(name = "ANNOTATION")
public class Annotation {

    @Id
    @Column(name = "ANNOTATION_ID")
    private Integer id;
    @Column(name = "ANNOTATION_text")
    private String text;
    @Column(name = "OTHER_TABLE")
    private Integer other_table;
    @Column(name = "OTHER_ID")
    private Integer other_id;

    // getters & setters

}
@Entity
@Table(name = "FOO")
public class Foo {

    @Id
    @Column(name = "FOO_ID")
    private Integer id;
    @OneToMany
    @Column // how would I configure this?
    private Collection<Annotation> annotations;

    // getters & setters

}