2017-02-14 7 views
1

Получение права на точку, я пытаюсь построить следующую логику до hibernate отношений.Как бороться с уникальным полем, генерируемым спящим?

В Resource есть много групп для чтения.

В Ресурсе есть много групп для записи.

Обе группы являются классами групп.

То, что я сделал до сих пор:

ResourcePage.class

public class ResourcePage { 
    /* 
    useless code 
    */ 
    private Set read; 
    private Set write; 
    @OneToMany(cascade = CascadeType.ALL, 
    fetch = FetchType.EAGER, 
    targetEntity = Groups.class) 
    @JoinTable(name = "resourcepage_read_permissions") 
    public Set getRead() { 
    return read; 
    } 

    @OneToMany(cascade = CascadeType.ALL, 
    fetch = FetchType.EAGER, 
    targetEntity = Groups.class) 
    @JoinTable(name = "resourcepage_write_permissions") 
    public Set getWrite() { 
    return write; 
    } 
    /* 
    useless code 
    */  
} 

таблицы не создается, как и ожидалось.

enter image description here

Однако Гибернация генерируя уникального ограничения для идентификатора группы и это дает мне большую проблему, потому что иногда две разным ресурсы могут быть такой же группа, как читать группы.

enter image description here

Как вы, ребята, дело с этим? Как я могу сделать hibernate не генерировать это уникальное ограничение?

Большое спасибо.

+0

Ребята, это была ошибка, которую я совершил, используя '@ manytomany', вместо этого' @ onetomany' может решить проблему. –

ответ

0

Вам необходимо использовать @ManyToMany вместо @OneToMany.

+0

Я уже это заметил, но вы быстро определили проблему. Большое спасибо. –