2015-08-07 2 views
2

У меня есть таблица с именем пользователя, как это:JPA Самого REFERENCING Сущности

public class User 
{ 
    private Long userId; 
    private String username; 
    //Other fields; 
} 

Теперь Lets говорят, что пользователь может иметь другие друг пользователя. Итак, как мне создать эти отношения в JPA.

Между тем я делал это в таблице пользователей в базе данных:

USER_ID 
USERNAME 
USER_FRIENDS 

И в User Entity, как это:

public class User 
{ 
    private Long userId; 
    private String username; 
    //Other fields; 
    @OneToMany(cascade = CascadeType.ALL) 
    @Column(name = "USER_FRIENDS") 
    private List<UserEntity> friends; 
} 

Это не работает. Итак, как мне добиться этого в JPA? Заранее спасибо!

+0

Действительно ли это OneToMany? Разве это не много? И если это так, тогда вам понадобится соединительная таблица. –

+0

Да, это может быть ManyToMany. Но из моего понимания, Пользователь может иметь несколько друзей пользователя. Таким образом, это будет OneToMany. Итак, я не уверен, как это достигается. –

+0

И этот пользователь не может быть другом для многих других? –

ответ

0

После исследования и помощи от @Florian Schaetz я нашел решение для самостоятельных ссылок сущностей. Потребность была в том, что у пользователя могут быть другие друзья-пользователи, и этот Пользователь может быть другом для других Пользователей. Итак, что я сделал, было так:

public class User 
{ 
    private Long userId; 
    private String username; 
    //Other fields; 
    @JoinTable(name = "USER_FRIENDS", joinColumns = { 
    @JoinColumn(name = "ADDING_USER", referencedColumnName = "USER_ID", nullable = false)}, inverseJoinColumns = { 
    @JoinColumn(name = "ADDED_USER", referencedColumnName = "USER_ID", nullable = false)}) 
    @ManyToMany 
    private Collection<User> friends; 

    @ManyToMany(mappedBy = "friends") 
    private Collection<User> addUser; 
} 

Надеюсь, это поможет другим людям! Еще раз спасибо друзьям!