"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 来自其他任何地方。