2017-02-06 13 views
0

У меня есть таблица, имя которой «Pstn», и есть таблица пользователей. Пользователям не нужно использовать таблицу Pstn. Но некоторые пользователи могут его использовать. Поэтому, если у pstn есть пользователь, мы хотим видеть, кто есть. Как настроить аннотации спящего режима?Как настроить отношения, основанные на аннотациях на гибернате?

pstnBbkTable.setVisibleColumns(new Object[]{"pstn", "bbk", "user.firstName", "inReserve", "creationDate", "expireDate", "button"}); 

java.lang.IllegalArgumentException: Идентификаторы должны существовать в контейнере или в виде генерируемого столбца, отсутствующий ID: user.firstName в com.vaadin.ui.Table.setVisibleColumns (Table.java:691)

пользователя таблице:

@Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "user_Id") 
    private long userId; 

    @Column(name = "username", nullable = false) 
    private String username; 

    @Column(name = "password", nullable = false) 
    private String password; 

    @Column(name = "first_name", nullable = false) 
    private String firstName; 

    @Column(name = "last_name", nullable = false) 
    private String lastName; 

ТфОП Таблица:

@Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "pstn_Id") 
    private long pstnId; 

    @Column(name = "pstn") 
    private String pstn; 

    @Column(name = "bbk") 
    private String bbk; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "user_Id") 
    private User user; 

********************* ОБНОВЛЕННОЕ РЕШЕНИЕ ****************

Я заменил pstn bean поле, как указано выше. Я думаю, что это произошло из-за FetchType.EAGER-Lazy ..

@ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "user_Id") 
    private User owner; 
+0

Это не совсем понятно, какое отношение вы хотите между этими 2 таблицами ... Если я получил это право: один пользователь может иметь ноль или несколько ТфОП? Если вы хотите, чтобы нулевой FK userId в таблице Pstn – Zeromus

+1

@Zeromus да, но когда я пытаюсь перечислить все данные pstn, я получил ошибку, как указано выше; java.lang.IllegalArgumentException: Идентификаторы должны существовать в Контейнере или как сгенерированный столбец, отсутствует id: user.firstName \t at com.vaadin.ui.Table.setVisibleColumns (Table.java:691) –

+0

никогда не использовал этот метод, но shouldnt user.firstName быть фактически userId.firstName? Кажется, что он не может найти эту колонку – Zeromus

ответ

0

Я заменил pstn bean field, как указано выше. Я думаю, что это произошло из-за FetchType.EAGER-Лазы ..

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "user_Id") 
private User owner;