2013-07-15 13 views
0

Я использую JPA для хранения моих объектов в базе данных. У меня есть класс User, который имеет в качестве поля (отношения один к одному) класс Password. Когда новый пользователь регистрируется, я хочу, чтобы сгенерированный идентификатор для класса User также был полем id для класса Password. Любые идеи о том, как это сделать? Вот соответствующий код ...Как использовать сгенерированное значение для поля в зависимом объекте?

@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; 
} 

ответ

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; 
    // ... 
} 
+0

Ahh, конечно же. спасибо – theGuardian

Смежные вопросы