2017-02-06 73 views
0

我有一個表名稱是「Pstn」,並有用戶表。用戶不必使用Pstn表。但有些用戶可以使用它。所以如果一個pstn有一個用戶,我們想看看誰是誰。我如何配置hibernate註釋?如何配置基於hibernate註釋的關係?

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

java.lang.IllegalArgumentException異常:IDS必須存在於容器或作爲生成列,缺少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; 

PSTN表:

@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個表之間什麼關係這是不是真的清楚...... 如果我說對了:一個用戶可以擁有零個或多個PSTN? 如果是這樣,你想在Pstn表中有一個可空的FK userId – Zeromus

+1

@ Zeromus是的,但是當我嘗試列出所有的pstn數據時,我得到了上面的錯誤; java.lang.IllegalArgumentException:Ids必須存在於容器中或作爲生成的列,缺少id:user.firstName \t at com.vaadin.ui.Table.setVisibleColumns(Table.java:691) –

+0

從未真正使用該方法,但shouldnt user.firstName實際上是userId.firstName? 似乎不能找到該列 – Zeromus

回答

0

我替換了pstn bean字段,就像上面一樣。我認爲它發生,因爲FetchType.EAGER-懶..

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