0

我正在使用 JPA 将我的对象存储在数据库中。我有一个 User 类,它有一个 Password 类作为字段(一对一关系)。当新用户注册时,我希望为 User 类生成的 Id 也是 Password 类的 id 字段。关于如何解决这个问题的任何想法?这是相关的代码...

@Entity
@Table(name="users")
public class User {
    @Id
    @GeneratedValue(strategy=SEQUENCE,generator="user_id_seq")
    @Column(name="user_id")
    private int id;

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

    @OneToOne(cascade=CascadeType.PERSIST)
    @JoinColumn(name="user_id")
    private Password password;
}


@Entity
@Table(name="passwords")
public class Password {
    @Id
  //@GeneratedValue ???
    @Column(name="user_id")
    int userId;

    @Column(name="password")
    String password;
}
4

1 回答 1

2

直接Password引用其父项User并将该字段标记为您的 id:

@Entity
@Table(name="passwords")
public class Password {
  @Id
  User user;
  // ...
}

或者,如果您仍然想要原始userId字段,请使用@MapsId

@Entity
@Table(name="passwords")
public class Password {
  @Id
  int userId;

  @MapsId
  @OneToOne
  @JoinColumn(name = "user_id")
  User user;
  // ...
}
于 2013-07-15T19:12:31.343 回答