2014-01-27 6 views
1

Я пытаюсь настроить классы JPA для следующих требований: PKJPA вложенного композиционный PK


Писателя класса/стол с ПК из [Long ид], например [ 1], [2], [3] ...

Книга класса/таблицы с составным PK из [Writer Long ид и Long индекса] (при этом каждый автор имеет свои собственные книги индексов), например, [1, 1], [1, 2], [1, 3] (три книги для записи 1), [2, 1], [2, 2], [2, 3], [2, 4] (четыре книги для писателя № 2) ...

A Страница класс/стол с композитным PK [Writer Long id, Book Long index и Long number] (таким образом, каждая книга имеет собственные номера страниц), например [1, 1, 1], [1, 1, 2], [1 , 1, 3], [1, 1, 4], [1, 1, 5] (пять страниц для писателя # 1 и его книга индекс # 1) ...


Что мне нужно от Экземпляр книги должен иметь возможность вызвать book.getWriter() и получить экземпляр Writer; также, page.getBook() вернет экземпляр книги. Конечно, ВСЕ три класса могут легко иметь простой длинный ПК, а затем, например, книга будет иметь Writer как недействительную ассоциацию @ManyToOne за пределами ПК, но она не отвечает нашим потребностям.


Я исчерпал любой конфигурации, используя @Embedded (| Id), @Embeddable, @IdClass, @MapsId и т.д. Я мог думать или гугле, но Hibernate всегда будет жаловаться в одну сторону или другую сторону, особенно об Страница класс, в котором вещи «вложен». В идеале, более поздний Класс класс/таблица с составным PK [Writer Long id, Book Long index, Страница Long number и Long paragraph index] также должен быть настроен аналогично.


Надеюсь, у кого-то есть хорошие намеки об этом.

Спасибо!

ответ

0

Простой пример использования классов ID:

@Entity 
Class Writer { 
    @ID Long id; 
} 
@Entity 
@IdClass(BookId.class) 
Class Book{ 
    @ID Long index; 
    @ID Writer writer; 
} 
Class BookId{ 
    Long index; 
    Long writer; 
} 
@Entity 
@IdClass(PageId.class) 
Class Page{ 
    @ID Long number; 
    @ID Book book; 
} 
Class PageId{ 
    Long number; 
    BookId book; 
} 

в основном, то, что вы хотите, чтобы ваша модель выглядеть?

Смежные вопросы