【问题标题】:"ids for this class must be manually assigned before calling save()" with string id“必须在使用字符串 id 调用 save() 之前手动分配此类的 ids”
【发布时间】:2016-03-22 21:54:33
【问题描述】:

我在内存测试中编写休眠时遇到异常。

org.hibernate.id.IdentifierGenerationException: 这个类的 ids 必须在调用 save() 之前手动分配:

@Entity
public Account{
     @Id
     String num;
}

首先,pojo 的 id 是 String,我无法更改它,我无权访问数据库并更改 pojo,我所能做的就是创建内存测试。

然后,在我保存这个 pojo 之前,我填写了这个 pojo 中的每个字段,仍然抛出这个异常。并且由于内存测试,内存DB是空的,那里没有冲突id。

任何想法,还有什么可能导致此异常?

【问题讨论】:

  • 您是否也为num 字段设置了值?

标签: java hibernate in-memory-database


【解决方案1】:

您需要在变量顶部添加@GeneratedValue。如果你不这样做,你需要给 id 一个值。是否在内存测试中无关紧要。

【讨论】:

  • 谢谢,我认为@GeneratedValue 只是用于数字类型的 id,显然我错了
  • @Walter 如果答案解决了您的问题,您应该从接受答案开始。我注意到你问了很多问题,但还没有接受任何一个答案。接受答案将鼓励用户回答您的问题。
  • @OPK 我仍然收到org.springframework.orm.jpa.JpaSystemException: 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
猜你喜欢
  • 2011-07-24
  • 2013-04-15
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 2015-11-18
  • 2012-08-31
相关资源
最近更新 更多