【发布时间】:2019-10-27 18:41:06
【问题描述】:
我有两个表 EmployeeGroup 表和 EmpplyeeDetails 表。 EmployeeGroupTable 具有应该从数据库序列 GroupIdGenerator 生成的主键 groupid。 EmployeeDetails 有两个主键,即 groupid 和employeeid。 Groupid 应与上表相同,并且employeeid 也应具有增量值,例如 1、2、3。 两个表中的这些值都应插入一个事务中。 您能帮我正确映射吗?
我已经尝试过使用不同的生成值和序列生成器组合,但无法将数据保存到表中。
@Entity
@Table(name="EMPLOYEE_GROUP")
public class EmployeeGroup {
@Column(name = "GROUP_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"groupid-gen")
@Id
@NotNull
@SequenceGenerator(name = "groupid-gen", sequenceName =
"GROUIP_ID_GENERATOR" )
private long groupId;
@OneToMany(mappedBy = "employeeDetail")
private List<EmployeeDetail> employeeDetails;
}
@Entity
@Table(name = "EMPLOYEE_DETAIL")
@IdClass(EmployeeID.class)
public class EmployeeDetail {
@ManyToOne
@JoinColumn(name = "GROUP_ID", insertable=false , updatable=false)
private EmployeeGroup employeeGroup;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator =
"groupid-gen")
@SequenceGenerator(name = "groupid-gen", sequenceName =
"GROUIP_ID_GENERATOR" )
@Column(name = "GROUP_ID")
@Nonnull
private Long groupId;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Nonnull
@Column(name = "EMPLOYEE_ID")
private Long employeeId;
}
public class EmployeeId{
private Long groupId;
private Long employeeId;
public EmployeeId(final Long groupId, final Long employeeId) {
this.groupId = groupId;
this.employeeId = employeeId;
}
public EmployeeId() {
}
}
预期的结果是两个表都应该有适当的值。
表员工组
GroupID
1
2
表 EmployeeDetail
GroupId EmployeeId
1 1
1 2
1 3
2 1
2 2
我收到错误消息 错误 o.h.e.jdbc.spi.SqlExceptionHelper - 序列“HIBERNATE_SEQUENCE” 未找到; SQL 语句: 调用 hibernate_sequence 的下一个值 [90036-197] org.springframework.orm.jpa.JpaSystemException:无法准备 陈述;嵌套异常是 org.hibernate.exception.GenericJDBCException:无法准备语句
【问题讨论】:
-
你用的是什么数据库?
-
嗨 @SimonMartinelli 我正在使用 Oracle 数据库。
标签: jpa spring-data-jpa openjpa jpa-2.1