"HIBERNATE_SEQUENCE" 未找到
"HIBERNATE_SEQUENCE" not found
我有两个 tables EmployeeGroup table 和 EmpplyeeDetails Table。 EmployeeGroupTable 有主键 groupid,它应该从数据库序列 GroupIdGenerator 中生成。
EmployeeDetails 有两个主键作为 groupid 和 employeeid。 Groupid 应该与之前的 table 相同,employeeid 也应该有增量值,如 1,2,3。
table 中的这些值应该插入到一个事务中。
你能帮我正确映射吗?
我已经尝试使用生成值和序列生成器的不同组合,但无法将数据保存到 table。
@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() {
}
}
预期结果都是 table 应该有适当的值,例如。
Table 员工组
GroupID
1
2
Table 员工详情
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: 无法准备语句
您正在混合使用 ID 生成器策略:
在 class EmployeeDetail
中,您有一个用于 groupId
的 Oracle 序列,但是 GenerationType.AUTO
用于 employeeId
这 GenerationType.AUTO
导致了问题。
要么你也必须在那里使用 Oracle 序列,要么你必须删除 @GeneratedValue
如果这个 id 来自其他任何地方。
我有两个 tables EmployeeGroup table 和 EmpplyeeDetails Table。 EmployeeGroupTable 有主键 groupid,它应该从数据库序列 GroupIdGenerator 中生成。 EmployeeDetails 有两个主键作为 groupid 和 employeeid。 Groupid 应该与之前的 table 相同,employeeid 也应该有增量值,如 1,2,3。 table 中的这些值应该插入到一个事务中。 你能帮我正确映射吗?
我已经尝试使用生成值和序列生成器的不同组合,但无法将数据保存到 table。
@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() {
}
}
预期结果都是 table 应该有适当的值,例如。
Table 员工组
GroupID
1
2
Table 员工详情
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: 无法准备语句
您正在混合使用 ID 生成器策略:
在 class EmployeeDetail
中,您有一个用于 groupId
的 Oracle 序列,但是 GenerationType.AUTO
用于 employeeId
这 GenerationType.AUTO
导致了问题。
要么你也必须在那里使用 Oracle 序列,要么你必须删除 @GeneratedValue
如果这个 id 来自其他任何地方。