- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经成功地将 @TableGenerator 与 EclipseLink 结合使用:
@Id
@TableGenerator(name = "ID_GEN",
table = "seq",
pkColumnName = "seqName",
valueColumnName = "`id`",
pkColumnValue = "SEQUENCE")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "ID_GEN")
private Long id;
我正在搜索 Mybatis 是否有同等的可能性来完成相同的结果,但我唯一看到的是对 generatedKey 的一些引用:
http://www.mybatis.org/generator/configreference/generatedKey.html# )
下面的陈述(来自上面的链接)指的是一些可能的“序列”,这让我认为可能有一种方法可以使用相同类型的序列表来完成此操作。
“该元素用于指定自动生成的键的属性(来自身份字段或序列)。”
Mybatis中有没有办法使用这个@GeneeratedValue/@TableGenerator机制?
任何帮助将不胜感激。
最佳答案
@TableGenerator
是JPA的特性。在底层,JPA 实现发出多个查询来生成值。 mybatis 不会这样做,也就是说,它不会执行任何您未显式指定的查询,因此没有简单且声明性的方法来实现与 @TableGenerator 提供的相同功能。您将需要模拟 hibernate 对序列表执行的查询。
在mybatis中可以使用selectKey
来生成值。
这里是 documentation 中的示例,稍加修改模拟 GenerationType.SEQUENCE
策略:
<insert id="insertAuthor">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select nextval('author_id_seq')
</selectKey>
insert into Author
(id, username, password, email,bio, favourite_section)
values
(#{id}, #{username}, #{password}, #{email}, #{bio}, #{favouriteSection,jdbcType=VARCHAR})
</insert>
在selectKey
部分中可以指定任意查询。其结果将分配给 keyProperty
中指定的属性,在本例中为传递对象的 id
。
模拟@TableGenerator
策略GenerationType.TABLE
的实际查询取决于数据库。对于 postgresql,selectKey
中的查询将类似于:
INSERT INTO seq (seqName, id) values ('SEQUENCE', 1)
ON CONFLICT
DO UPDATE id = id + 1
WHERE seqName = 'SEQUENCE'
RETURNING id
关于java - mybatis的@TableGenerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57047014/
我已经成功地将 @TableGenerator 与 EclipseLink 结合使用: @Id @TableGenerator(name = "ID_GEN", table = "se
我将尝试使用表生成器生成主键。但是当我在我的表中插入 6 条记录时,primaryKey 表只显示一个值。这是下面的代码 我的实体类 package com.generatorvaluetest.do
你能告诉我什么时候使用它吗?为什么我要创建一个新表只是为了保留主键,而现在大多数 DBMS 都支持自增并且你可以轻松调整它? 最佳答案 TableGenerator 的主要优点是可移植性,这是保证适用
我有一个表,该表具有使用表生成器生成的主键: @TableGenerator(名称 =“resourceIdGenerator”,表 =“SEQUENCE”,pkColumnName =“NAME”,
我有下面的实体,它使用 TABLE 策略来生成 id,并且工作得很好。 @Entity @Table(name = "Test_Table") public class SomeEntity impl
我有一个带有@Id 和@TableGenerator 的“狗”实体 ... @TableGenerator(table = "seq", name = "dog_gen", pkColumnName
将依赖项从 Spring 4.1.6.RELEASE 更新到 5.1.4.RELEASE 并将 Hibernate 4.3.9.Final 更新到 5.4.1.Final 后,我的一些测试用例开始失败
@TableGenerator 技术生成主键有什么好处?为什么我们使用这种技术以及如何使用用于存储生成器的序列名称和值的第三个表来获取数据? 最佳答案 来自链接。 http://en.wikibook
我在我的项目中使用TableGenerator,下面是相同的代码片段。 @GeneratedValue(strategy = GenerationType.TABLE, generator =
在尝试在表中保存新行时,我收到重复的 id 错误并且无法保留数据。它位于我们的舞台环境中,因此我目前无法访问日志,尽管我正在尝试暂时获取它以解决此问题。到目前为止我只有基本的错误消息: Duplica
我正在尝试使用 hibernate JPA 到 Tomcat 中开发后端应用程序。从现在开始,它在使用 JPA 功能的测试中运行良好,并且没有 JPA 服务的第一个版本现在正在运行(文件上传、下载等)
我有以下实体: @Entity @Table(name = "sales", schema = "cust_tables") @Multitenant(MultitenantType.TABLE_PE
我希望我的数据库中所有生成的主键都是负整数。 我定义了一个 TableGenerator: 我假设这会从 -1000000 开始生成第一个 key 并将每个 ID 递增 1。因此下一个 ID 将是
我有一个 JPA 实体,其 TableGenerator 的 AllocationSize=25。如果我手动更新 TableGenerator 表并为其下一个 ID 起始范围指定一个新值,则在当前范围
我有一个具有以下主键生成策略的实体类 @Id @Column(name = "id", nullable = false) @TableGenerator(name = "USERGENERATOR"
这是 JPA 实体架构的摘录 @Entity @Table(name="customer") public class Customer implements Serializ
我有一个基于 Spring 的应用程序,它使用 JPA 2.1 作为持久层。我使用 @TableGenerator 和 @GenerateValue 注释来处理主键 ID 生成。 这些是注释: @Ta
我需要连接到供应商数据库并插入客户数据。用于生成新客户 ID 的序列表存储最后使用的 ID(不是下一个可用的)。我在 jpa 或 hibernate 文档中找不到任何指示告诉 hibernate 将
我在 Spring Boot 1.4.0.RELEASE 的应用程序中使用 hibernate 。 索引的实体看起来类似于: @Entity(name = "SearchableTariffItem"
我们从 Hibernate 4 迁移到 5,一个主要问题是新的生成器,它生成表行的 ID。我们的旧生成器都是基于表的,比如 @TableGenerator(name = TABLE_NAME + "_
我是一名优秀的程序员,十分优秀!