如何为依赖对象中的字段使用生成的值?

时间:2013-07-15 18:56:50

标签: java jpa persistence

我正在使用JPA将对象存储在数据库中。我有一个User类,它有一个字段(One to One关系)和一个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;
}

1 个答案:

答案 0 :(得分: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;
  // ...
}