Java 如何在hibernate注释中为子类配置表生成器?
我正在使用hibernate作为ORM工具创建一个应用程序,注释用于配置JPA元数据。现在,我面临一些实体ID生成器的问题。我的实体是Java 如何在hibernate注释中为子类配置表生成器?,java,hibernate,Java,Hibernate,我正在使用hibernate作为ORM工具创建一个应用程序,注释用于配置JPA元数据。现在,我面临一些实体ID生成器的问题。我的实体是 @MappedSuperclass public class IdentityEntity { @Id @Column(name = "id") @TableGenerator(name = "id_generator", table = "db_index", pkColumnName = "id", valueColumnName = "manuitemi
@MappedSuperclass
public class IdentityEntity {
@Id
@Column(name = "id")
@TableGenerator(name = "id_generator", table = "db_index", pkColumnName = "id", valueColumnName = "manuitemid", pkColumnValue = "id", allocationSize = 1, initialValue=1000)
@GeneratedValue(strategy = GenerationType.TABLE, generator = "id_generator")
private long id;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
在此场景中,只要tisIdentityEntity
将用作任何实体的父类。Id生成器将使用相同的列名为所有实体生成Id。
我尝试将id生成器放在具有不同列名的其他实体上。但是hibernate返回一条错误消息,表示找不到新列名。详情如下:
ERROR MultipleHiLoPerTableGenerator - could not read or init a hi value
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'menuitemid' in 'field list'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
我想改变这种行为,并分别为每个实体创建一个ID生成器。我有哪些选项?这是一个映射的超类,正在尝试在从它继承的类中使用不同的id?不要将id放入超类这是一个映射的超类,正在尝试在从它继承的类中使用不同的id?不要将id放入超类中