Cześć,
Potrzebuję dodać do bazy książkę, ogólnie to działa ok. Problem pojawia się kiedy chce wypełnić pole autora danej książki. Autorów przechowuję w oddzielnej tabeli authors 1...N books.
Definiując klasę Author dałem:

@OneToMany
@JoinColumn(name = "author_id")
private List<Book> books;

Kolumna author_id w tabeli book została dopisana, więc póki co jest OK.
Teraz na formularzu dodawania książek autorów wyświetlam jako dropdown list (autorzy wyświetlają się poprawnie jako wydrukowane obiekty) nazywając pole author_id i wrzucając do niego ID autora wybranego przy danej ksiażce:

<#macro authorsMacro authors valuesA>
<select name="author_id">
	<#list valuesA as singleAuthor>
		<option value="${singleAuthor.id}">${singleAuthor}</option>
	</#list>
</select>
</#macro>

Podglądając POSTa dane lecą ok, np:

isbn=04-23423423&title=Aaaa&genre=Komedia&author_id=1

Natomiast w bazie w kolumnie author_id widnieje pustka.
1. pytanie: jak to pożenić, żeby zapisywało author_id do tabeli book? Nie dziwie się, że nie chce mi wziąc author_id z formularza, jako, żę klasa book sama w sobie nie ma takiego pola a zostało ono utworzone jak koncówka relacji 1..N z tabelą author.
Naprawione:
W klasie Author:

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "author_id")
private List<Book> books;

W kontrolerze:

List<Book> books = new ArrayList<Book>();
books.add(book);
Author author = authorService.getSingleAuthor(authorId);
author.setBooks(books);
authorService.addAuthor(author);
  1. pytanie: gdy już uda mi się dodać go do tabeli book to jak wyciągnąć i wyświetlić ale już nie **author_id **tylko odpowiadające mu imię i nazwisko? Książki są listowane tak:
List<Book> booklist = sessionfactory.getCurrentSession().createCriteria(Book.class).list();

Nie za bardzo mam pomysł jak się "wgryźć" w tę listę i wyciągane author_id zamienic na autora (powiedzmy, że mam metodę getSingleAuthor(int authorId), tylko co dalej?)

PROBLEM ROZWIĄZANY.