我有一个具有以下主键生成策略的实体类
@Id
@Column(name = "id", nullable = false)
@TableGenerator(name = "USERGENERATOR", table = "my_sequences", pkColumnName = "sequence_name", pkColumnValue = "user_id", valueColumnName = "next_value")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "USERGENERATOR")
protected Integer id;
这工作正常,直到我需要使用本机查询插入新行的新要求 . 由于实体继承策略(@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)),主键列不使用auto_increment .
我想知道是否有办法使用EntityManager向表生成器请求下一个值 .
2 回答
我不认为您可以通过任何公共API访问
@TableGenerator
,但使用本机SQL获取下一个值很容易 . 只需使用这两个查询:如果
@TableGenerator
同时获取下一个值,则存在冲突风险 .当你添加一个新元素时,你需要像_1601573这样更改
@GeneratedValue(strategy = GenerationType.TABLE, generator = "USERGENERATOR")
,它会添加1个自动