我有一节课
UserAccountEntity
一对一的关系
UserEntity
:
@Entity
@Table(name = "user_entity")
public class UserEntity implements Serializable {
private static final long serialVersionUID = 2059380022311094257L;
@Id
@GeneratedValue(generator = RandomAlphanumericIdGenerator.generatorName)
@GenericGenerator(name = RandomAlphanumericIdGenerator.generatorName, strategy = "com.myproject.project.core.utils.RandomAlphanumericIdGenerator")
private String id;
public UserEntity() {}
}
@Entity
@Table(name="user_account_entity")
public class UserAccountEntity implements UserDetails {
@Id
private String id;
@MapsId
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private UserEntity user;
}
现在我想添加另一个类
UserAccountActivityCode
,它应该与
用户帐户实体
. 令我困惑的是
用户帐户实体
生成于
用户实体
. 我不知道该如何定义它的id?
我创建了一个类
用户帐户活动代码
:
@Entity
@Table(name = "User_account_activity_code")
public class UserAccountActivityCode implements Serializable {
@Id
@GeneratedValue(generator = RandomAlphanumericIdGenerator.generatorName)
@GenericGenerator(name = RandomAlphanumericIdGenerator.generatorName, strategy = "com.myproject.project.core.utils.RandomAlphanumericIdGenerator")
private String id;
public UserAccountActivityCode() {}
}
但我该如何在
用户帐户实体
班级和地点
用户帐户实体
从那个案子里得到身份证?
更新1:
我出去了
GeneratedValue
由于
UserAccountActivityCodeEntity
,并添加
setUserId
保存时设置:
@Entity
@Table(name="user_account_activity_code_entity")
public class UserAccountActivityCodeEntity {
private final static int ACTIVITY_CODE_LENGTH = 6;
@Id
private String userId;
private String acitivityCode;
public UserAccountActivityCodeEntity(String id) {
this.acitivityCode = RandomStringUtils.randomAlphanumeric(ACTIVITY_CODE_LENGTH);
this.userId = id;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getAcitivityCode() {
return acitivityCode;
}
public void setAcitivityCode(String acitivityCode) {
this.acitivityCode = acitivityCode;
}
}
我的服务层中有以下代码:
userAccount = new UserAccountEntity(username,
passwordEncoder.encode(password));
userAccount.setUser(new UserEntity());
UserAccountActivityCodeEntity activityCode = new UserAccountActivityCodeEntity(userAccount.getId());
userAccount.setActivityCode(activityCode);
userAccountRepository.save(userAccount);
从而导致此错误:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.myproject.project.core.entity.useraccount.UserAccountActivityCodeEntity