2012-01-18 71 views
1

让我定义以下实体,例如:JPA中的两个实体可以有多个关系吗?

@Entity 
public class Box{ 

    @ManyToOne 
    Apple apple; 

    @ManyToOne 
    Orange orange; 

} 

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 

} 

忽视的事实是许多批注已被省略。我只是用这个代码作为例子。

现在我想创建一个额外的苹果和桔子之间的单向关系。

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 

    @ManyToMany 
    List<Orange> OrangeFriends; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 


} 

有没有什么理由我不能做这样的事情?

+0

不,没有理由。只要使用适当的注释和属性,一切都会好起来的。 – 2012-01-18 11:00:43

+0

只是为了确认,我不能使用连接列的默认名称,因为默认名称是类名,并且会有冲突。所以,如果我使连接列名称显式(和不同的lol),一切都会好吗? – b3bop 2012-01-18 16:39:36

+0

是的,一切都会好起来的。 – 2012-01-18 16:40:51

回答

0

我怀疑Hibernate可以区分Apple中的两个@ManyToMany关联,因为您使用的是默认连接列,并且这两个关联对于两个关联都是相同的。我想你可以将你的Apple关联定制为Orange,这样它们就可以映射到数据库中的不同列(不同的FK)。

相关问题