2013-02-08 69 views
1

我能有一个关系如下:@ManyToOne,一列可以引用其他两列吗?

@Entity Table1{ 

    @ManyToOne 
    @JoinColumn(name = "Column1", 
       referencedColumnName = "t2id", 
       insertable = false, 
       updatable = false) 
    private Table2 table2_col; 

    @ManyToOne 
    @JoinColumn(name = "Column1", 
       referencedColumnName = "t3id", 
       insertable = false, 
       updatable = false) 
    private Table3 table3_col; 
} 

回答

1

是,映射看起来有效。 两种情况下的列Column1属于不同的表格(Table2.column1Table3.column1)。所以我没有看到任何碰撞。情况并非如此,因为标题中提到“一列涉及两列”。

在这种情况下,你有两个多到一个关系:表1 < --->表2表1 < --->表3。因此,表(2和3)中的列1表1的外键。所以你有2个不同的外键。

+0

谢谢,但Column1是Table1的列,它引用Table2中的t2id和Table3中的t2id,所以它与引用其他两列的单列仍然相同。这是一个有效的场景吗?因为我没有得到期望的输出。 – user2055100 2013-02-10 04:23:20

+0

啊,你说得对。对不起,我误解了你的代码。你可以显示Table2和Table3映射吗?你究竟想要实现什么?可能你的问题可以用不同的映射来解决?就数据库而言,您不能拥有引用多个列的外键。 (请参阅http://stackoverflow.com/questions/7844460/foreign-key-to-multiple-tables)。但是有一些解决方法。 – wajda 2013-02-10 11:26:05

+0

顺便说一下,在使用ORM时思考表并不是一个好主意。相反,最好是考虑对象。 – wajda 2013-02-10 11:29:36

相关问题