生成器在策略中不递增=jpa中的GenerationType.TABLE
我在Employee表上使用了strategy=GenerationType.TABLE,我使用@TableGenerator(name=“Emp\u Gen”,TABLE=“ID\u Gen”,pkColumnName=“Gen\u name”,valueColumnName=“Gen\u VALUE”)定义了一个生成器,并使用生成器的名称“Emp\u Gen”在@GeneratedValue(generator=“Emp\u Gen”)中指定了生成器。当应用程序启动时,它会创建一个名为“ID\u GEN”的表,但该表不包含任何名为“emp\u GEN”的生成器。实际上,它会创建一个与我的实体类名相同的生成器“EMPLOYEE”。还有“GEN\u value”的值持久化员工实体时不会增加。员工ID也是随机生成的生成器在策略中不递增=jpa中的GenerationType.TABLE,jpa,Jpa,我在Employee表上使用了strategy=GenerationType.TABLE,我使用@TableGenerator(name=“Emp\u Gen”,TABLE=“ID\u Gen”,pkColumnName=“Gen\u name”,valueColumnName=“Gen\u VALUE”)定义了一个生成器,并使用生成器的名称“Emp\u Gen”在@GeneratedValue(generator=“Emp\u Gen”)中指定了生成器。当应用程序启动时,它会创建一个名为“ID
package com.test.domain;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.TableGenerator;
@Entity
public class Employee {
@TableGenerator(name="Empl_Gen", table="ID_GEN",pkColumnName="GEN_NAME",valueColumnName="GEN_VALUE")
@Id@GeneratedValue(generator="Empl_Gen",strategy=GenerationType.TABLE)
private Long id;
private String Name;
private String Country;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getCountry() {
return Country;
}
public void setCountry(String country) {
Country = country;
}
}您的意思是说在ID\u GEN表中,它创建了一行,其中包含GEN\u NAME=“EMPLOYEE”?是的,这就是它应该做的。。。为员工表生成的值。它将创建ID块(为什么任何表生成器都有initialValue和allocationSize)。发布发布的SQL以及与该SQL匹配的持久性代码。当您在使用JPA时,请提及哪个JPA实现。是的,先生,它使用GEN_NAME=“EMPLOYEE”创建了行,但正如我目前正在阅读的书(Mike Keith&Merrick的pro JPA 2)中所写的那样,他写道:“生成器的名称将成为该行的pkColumnNamecolumn列中存储的值,并由提供程序用于查找生成器以获取其最后分配的值”。先生,您是否可以重新定义ID块的概念。下面是我发布的SQL:……Hibernate:插入ID_GEN(GEN_name,GEN_value)值('Employee',?)Hibernate:update ID_GEN set GEN_VALUE=?其中GEN_VALUE=?和GEN_NAME='Employee'Hibernate:insert into Employee(Country,NAME,ID)VALUE(?,,?)你是指EclipseLink作者写的关于EclipseLink实现的书(JPA规范中没有定义该表中应该包含的内容)。您使用的是哪种实现?很抱歉,我使用的是jpa 2.0实现