如何创建具有来自另一个实体的字段的 JPA 实体?

时间:2021-07-19 21:33:00

标签: java spring spring-boot jpa spring-data-jpa

我在 SpringBoot 中有以下实体,我想创建一个新实体,该实体具有注册用户的用户 ID 和注册/登录用户的名称作为实例字段/表列。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="User")
public class WebUser {

    @Id
    @GeneratedValue
    private Long userID;

    @NonNull
    private String name;

    @NonNull
    private String email;

    @NonNull
    private String password;
}

我将如何使用 SpringBoot 和 JPA 实体中的表单来执行此操作?我很挣扎,我尝试使用 @OneToMany 注释创建一个带有隐藏输入字段的表单,但用户 ID 和名称为空。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

首先,您应该使用 @Column(name = "COLUMN_NAME") 定义表列名称并假设您的新实体名称为 LogUser。

登录用户

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="LogUser")
public class LogUser{

    @Id
    @GeneratedValue
    @Column(name = "ID")
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USER_ID", nullable = false)
    private WebUser webUser;

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

}

网络用户

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="User")
public class WebUser {

    @Id
    @GeneratedValue
    @Column(name = "USER_ID")
    private Long userID;

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

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

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

    @OneToMany(mappedBy = "webUser")
    private Set<LogUser> logUsers;



}