- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我将尝试使用表生成器生成主键。但是当我在我的表中插入 6 条记录时,primaryKey 表只显示一个值。这是下面的代码
我的实体类
package com.generatorvaluetest.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.TableGenerator;
@Entity
public class Snufu {
private int autoId;
private int identityId;
private int sequenceId;
private int tableId;
private String name;
public int getAutoId() {
return autoId;
}
public void setAutoId(int autoId) {
this.autoId = autoId;
}
public int getIdentityId() {
return identityId;
}
public void setIdentityId(int identityId) {
this.identityId = identityId;
}
public int getSequenceId() {
return sequenceId;
}
public void setSequenceId(int sequenceId) {
this.sequenceId = sequenceId;
}
@Id
@TableGenerator(name="tg" , table="pk_table", pkColumnName="name" ,
valueColumnName="vlaue" , allocationSize=10)
@GeneratedValue(strategy=GenerationType.TABLE , generator="tg")
public int getTableId() {
return tableId;
}
public void setTableId(int tableId) {
this.tableId = tableId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是我的主课
package com.generatorvaluetest.main;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import com.generatorvaluetest.domain.Snufu;
import com.generatorvaluetest.util.HibernateUtil;
public class GeneratorValueTest {
public static void main(String[] args) throws HibernateException{
HibernateUtil.recreateDatabase();
Session session = HibernateUtil.beginTransaction();
for(int i = 0 ; i< 5 ; i++){
Snufu snufu = new Snufu();
snufu.setName("jimmy"+i);
session.saveOrUpdate(snufu);
}
new Thread(new Runnable() {
@Override
public void run() {
Session session = HibernateUtil.beginTransaction();
Snufu snufu = new Snufu();
snufu.setName("jimmykalra");
session.saveOrUpdate(snufu);
HibernateUtil.commitTransaction();
}
}).start();
HibernateUtil.commitTransaction();
}
}
在数据库中,当我从 pk_table 中选择值时,这些值是
|name | value|
|snuf | 1 |
但是在snufu表中有6条记录
最佳答案
与指定的表相比,valueColumnName
的值拼写错误。也没有提到要引用哪一行来获取键,由列值(pkColumnValue
)标识。
下面是示例代码&可以引用TableGenerator
documentation , 供进一步引用。
TableGenerator(name="tg" , table="pk_table", pkColumnName="value" ,
valueColumnName="name" , pkColumnValue = "snuf", allocationSize=10)
关于java - @TableGenerator : how to use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13687898/
我已经成功地将 @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 + "_
我是一名优秀的程序员,十分优秀!