В приведенном ниже демонстрационном коде User
является родительским объектом с отношением один-ко-многим с BlogPost
.
Поскольку BlogPost
является потомком User
, его поле первичного ключа не может быть автоматически сгенерированным значением long
, но должно быть объектом Key
, экземпляром которого является KeyFactory
.
В данный момент я передаю BlogPost
blogTitle
(не гарантированно уникальный) методу createKey
при создании экземпляра Key
для BlogPost
Но я не знаю, как сгенерировать уникальное значение идентификатора для BlogPost
?
@Entity
public class BlogPost {
@Id
private Key key;
private String blogTitle;
private Text blogText;
@ManyToOne(fetch = FetchType.LAZY)
private User user;
public BlogPost(Key parentKey, String blogTitle) {
this.key = KeyFactory.createKey(parentKey, "BlogPost", blogTitle);
}
}
@Entity
public class User {
@Id
private Key key;
private String username;
private String email;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<BlogPost> blogPosts;
public User(String username){
this.key = KeyFactory.createKey("User", username);
}
}