使用hibernate和entitymanagerfactory java的oneToMany关系

使用hibernate和entitymanagerfactory java的oneToMany关系,java,Java,在两个实体之间建立一对一关系时,我遇到了一个问题。我有一个可以拥有多个属性的用户。我想在MySql中定义这个关系并创建表,但是当我运行它时,线程“main”java.lang.NullPointerException中会出现异常 在start.ApplicationStart.main处(ApplicationStart.java:44) mysql“user_id”和city中的user表中还有两列。到目前为止,我在代码中定义的是: 在类用户中,我有以下字段: @Id private

在两个实体之间建立一对一关系时,我遇到了一个问题。我有一个可以拥有多个属性的用户。我想在MySql中定义这个关系并创建表,但是当我运行它时,线程“main”java.lang.NullPointerException中会出现异常 在start.ApplicationStart.main处(ApplicationStart.java:44) mysql“user_id”和city中的user表中还有两列。到目前为止,我在代码中定义的是: 在类用户中,我有以下字段:

 @Id
    private String id;

@OneToMany(mappedBy = "user",cascade = CascadeType.ALL) //mapped by variable in class user
    private List<Properties> properties;

我不明白为什么在用户表中有额外的列。另外,我对这两个表都使用实体管理器。任何提示都很好

您已经将连接列指定为“用户id”。。。但该列未在用户或属性中定义。。。你的意思是要使用另一个列名吗?我真的不知道如何做到这一点,这是我从互联网上的示例中了解到的,在这些示例中,用户id都没有出现在这两个类中。所以一个提示会很好,因为我只想定义一对多的关系。在其他示例中,我看到没有必要使用joincolumn,所以我不确定是否需要它…我总是让join列与我要加入的表的实际主键匹配。。。在您的情况下,将密钥更改为用户上的用户id,例如。。。你可能想让这个人变得懒惰。。由于这是一个双向映射,您应该在用户上添加addProperties和removeProperties方法以保持双向同步。在属性上实现equals和hash,以便在实体状态转换期间保持固定状态。。。
@Column(name = "city")
 private String city; 

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


 @ManyToOne
 @JoinColumn(name="user_id")// , nullable=false
private User user;