如何配置基于休眠注释的关系



我有一个名称为"Pstn"的表,并且有用户表。用户不必使用 Pstn 表。但是有些用户可以使用它。因此,如果一个 pstn 有一个用户,我们想看看谁是。如何配置休眠注释?

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

java.lang.IllegalArgumentException:Id 必须存在于容器中或作为生成的列存在,缺少 id:user.firstName at 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;

我像上面一样替换了 pstn bean 字段。我认为这是因为FetchType.EAGER-Lazy而发生的。

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

最新更新