Hibernate 如何注释id以使其';没有序列表的自动增量?

Hibernate 如何注释id以使其';没有序列表的自动增量?,hibernate,jpa,sequence,auto-generate,Hibernate,Jpa,Sequence,Auto Generate,我无法为新实体生成id,我尝试了: @Id @GeneratedValue private Long myId; 及 但是在entityManager.persist上i未找到表“序列” 在纯hibernate中,generator class=“increment”对我来说效果很好。您尝试过这个吗 @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; 您可以将myId定义为数据库中的自动增量/标识列,并按照以下方

我无法为新实体生成id,我尝试了:

@Id
@GeneratedValue
private Long myId;

但是在
entityManager.persist上
i未找到
表“序列”
在纯hibernate中,
generator class=“increment”
对我来说效果很好。

您尝试过这个吗

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
您可以将myId定义为数据库中的自动增量/标识列,并按照以下方式注释相应的字段实体:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long myId;

这至少适用于H2 1.3.160和Hibernate 3.6.8

如果要生成多个持久化对象之间共享(且唯一)的ID,请使用@TableGenerator。H2和许多其他数据库没有对序列的内部支持,因此@SequenceGenerator无法工作

下面是一个跨两个对象拥有唯一/共享@Id的快速示例:

@Entity
public class Class1 {

  // setting pkColumnValue of TableGenerator is very important ;-)
  @Id
  @TableGenerator(
      name = "guid", 
      initialValue = 0, 
      allocationSize = 10, 
      table = "GUID_SEQ", 
      pkColumnName = "GEN_KEY", 
      valueColumnName = "GEN_VALUE", 
      pkColumnValue = "GUID")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
  private long id;
}


@Entity
public class Class2 {

  // use the same pkColumnValue 
  @Id
  @TableGenerator(
      name = "guid", 
      initialValue = 0, 
      allocationSize = 10, 
      table = "GUID_SEQ", 
      pkColumnName = "GEN_KEY", 
      valueColumnName = "GEN_VALUE", 
      pkColumnValue = "GUID")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
  private long id;
}

H2数据库。generator class=“increment”在纯hibernatetries中工作,以查询序列表您使用的是哪个数据库?也许这个链接有更多的信息-我想强调的是,将数据库列定义为AUTO_INCREMENT是多么重要。
@Entity
public class Class1 {

  // setting pkColumnValue of TableGenerator is very important ;-)
  @Id
  @TableGenerator(
      name = "guid", 
      initialValue = 0, 
      allocationSize = 10, 
      table = "GUID_SEQ", 
      pkColumnName = "GEN_KEY", 
      valueColumnName = "GEN_VALUE", 
      pkColumnValue = "GUID")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
  private long id;
}


@Entity
public class Class2 {

  // use the same pkColumnValue 
  @Id
  @TableGenerator(
      name = "guid", 
      initialValue = 0, 
      allocationSize = 10, 
      table = "GUID_SEQ", 
      pkColumnName = "GEN_KEY", 
      valueColumnName = "GEN_VALUE", 
      pkColumnValue = "GUID")
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
  private long id;
}