【问题标题】:@TableGenerator doesn't work with H2?@TableGenerator 不适用于 H2?
【发布时间】:2017-07-28 11:21:26
【问题描述】:

我正在使用 H2 测试我的应用程序环境。我有表订单,我想从 10000 开始订单 ID。我创建了表列:

@Id
@TableGenerator(name = "ORDER_GEN",
              table = "ID_GEN",
              pkColumnName = "SEQ_NAME",
              valueColumnName = "SEQ_NUMBER",
              pkColumnValue = "ORDER_GEN",
              initialValue = 1000)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "ORDER_GEN")
private Long orderId;

但不起作用。我重新启动了应用程序,创建了表 ID_GEN 但每次从 0 开始排序。

有什么想法吗?

问候

【问题讨论】:

  • “不起作用”。这意味着什么?有什么例外吗?调用了一些 SQL 吗?
  • 我的意思是,表 ID_GEN 已创建,但每次从 0 开始排序,而不是从 1000 开始(但应该)。
  • 所以当你调用em.persist时发布你的JPA提供者发出的精确SQL语句
  • 只是 repository.save(order) 因为我使用的是 Spring Data Rest。我已将 DB 从 H2 更改为 MySQL,但仍然无法正常工作。
  • 所以您使用的是 Spring Data JPA (!= JPA API)。 JPA 提供程序日志会告诉您 SQL,因此请查看它。也就是调试

标签: java hibernate spring-data-jpa


【解决方案1】:

我在这里找到了解决方案: https://stackoverflow.com/a/13315956/5877109 问题在于休眠错误。

在 application.properties 添加设置后:

spring.jpa.hibernate.use-new-id-generator-mappings=true

一切都很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 2023-02-08
    • 2017-01-12
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 2015-06-12
    • 2022-01-09
    相关资源
    最近更新 更多