2016-02-22 7 views
0

Я недавно задал довольно похожий вопрос, но ответ не решает мою новую проблему.Java EE, Integer to User?

У меня есть две таблицы: пользователь и книга, они находятся в отношениях ManyToOne. В таблице Book есть атрибут user_id, который соединяет обе таблицы. Использование Eclipse I генерируемый классы сущностей, и «user_id» был создан не как Integer, как в базе данных, но:

@JoinColumn(name="user_id") 
private User user; 

Так что теперь, когда я пытаюсь создать новую «Книгу», как это:

public String saveData() { 
if(!validate()){ 
... 
if (book != null) { 
     System.out.println(getUser()); 
     setName(book.getName()); 
     System.out.println("Post3"); 
     setSurname(book.getSurname()); 
     setAdress(book.getAdress()); 
     setSize(book.getSize()); 
     setContact(book.getContact()); 
     setPrice(book.getPrice()); 
     setOthers(book.getOthers()); 
     setIsReady(book.getIsReady()); 
     setRooms(book.getRooms()); 
     setUser(book.getUser()); 
     System.out.println(user); 
    } 
private boolean validate() { 
     FacesContext ctx = FacesContext.getCurrentInstance(); 
     boolean result = false; 
     System.out.println("validate"); 

     if (ctx.getMessageList().isEmpty()) { 


      book.setName(name.trim()); 
      book.setSurname(surname.trim()); 
      book.setAdress(adress.trim()); 
      book.setSize(size.trim()); 
      book.setContact(contact.trim()); 
      book.setPrice(price); 
      book.setOthers(others.trim()); 
      book.setIsReady(isReady.trim()); 
      book.setRooms(rooms); 
      book.setUser(user); 
      result = true; 
     } 

     return result; 
    } 

... 
    bookDAO.create(book); 

Я получаю

Column 'user_id' cannot be null 

Я не отправляю 'user_id' в форме, но у меня он хранится в сессии, но как целое.

Так что теперь, когда я пытаюсь заставить этот int в setUser получить ошибку, я могу использовать только объекты User там.

Итак, мой вопрос в том, есть ли способы конвертировать Integer (который мой id_user) в пользователя?

+0

набор user_id в USERID класса пользователя. –

ответ

0

Вы должны выбрать пользователя по user_id из базы данных, или просто

User user = new User(); 
user.setUserId(id_user); 
book.setUser(user); 
1

Вы должны получить объект пользователя из базы данных с помощью user_id в сеансе.
Если вы используете JPA EntityManager

User user = entityManager.find(User.class, user_id); 
book.setUser(user);