我正在使用hibernate创建一个app作为ORM工具,注释用于配置JPA元数据。现在,我面临着实体ID生成器的一些问题。我的实体是。
@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;
}
}
在这种情况下,只要tis IdentityEntity
将用作任何实体的父类。 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生成器。我有什么选择?