0

我正在使用 JPA2.0 和 Hibernate 4

为了在表中生成主键,我正在使用表触发器。如果我使用 Long 作为主键的数据类型,触发器可以正常工作。但是,如果我使用字符串作为主键数据类型,则会收到以下错误。

org.springframework.orm.hibernate3.HibernateSystemException: Unknown integral 
data type for ids : java.lang.String; nested exception is
org.hibernate.id.IdentifierGenerationException: Unknown integral
 data type for ids : java.lang.String at 
org.springframework.orm.hibernate3.SessionFactoryUtils.
convertHibernateAccessException(SessionFactoryUtils.java:690)

那么是否不允许使用String作为主键来使用触发器生成值?

我使用触发器生成值的代码片段

private String deptNo;
@Id
@GenericGenerator(name = "trig", strategy = "increment")
@GeneratedValue(generator = "trig")
@Column(name = "DEPT_NO")

  public String getDeptNo() {
    return deptNo;
}

public void setDeptNo(String deptNo) {
    this.deptNo = deptNo;
}
4

1 回答 1

2

不允许在休眠中为 String 使用生成的值,但是对键没有限制。如果您必须使用 deptNo 作为字符串,您可以为您的 Domain 对象创建一个适配器类,其中包含作为 Long 的 deptNo。

于 2013-05-11T09:47:50.370 回答