当前位置: 首页 > 知识库问答 >
问题:

使用GenericGenerator的Hibernate GeneratedValue被忽略

松兴邦
2023-03-14

该字段“auftragsnummer”始终保持为空,即使它用@GeneratedValue进行了注释:

@Entity
public class Auftrag implements Serializable
{
   @Id
   @GeneratedValue
   private int id;

   @Pattern(regexp = AUFTRAGSNUMMER_REGEXP, message = "{validator.auftragsnummer}")
   @Length(min = 20, max = 20)
   @GenericGenerator(name = "sequence_auftragsnummer", strategy = "de.software.AuftragsnummerGenerator")
   @GeneratedValue(generator = "sequence_auftragsnummer")
   @Column(unique = true, nullable = false)
   private String auftragsnummer;
}

我使用getibernateTemplate().persist(t)存储它。引用的生成器类实现org.hibernate.id.identifierGenerator。我不知道为什么它被忽视了。

环境:

  • Hibernate5.0.1
  • Spring 4.2.1
  • Java 7
  • DB2 10

共有1个答案

温开畅
2023-03-14

JPA只要求在@id字段上支持@generatedvalue

如果您的订单号不依赖于实体的主键,那么最简单的解决方案是使用@prepersist

@PrePersist
public void onCreate() {
    auftragsnummer = ...;
}
 类似资料:
  • 我试图用DataJpaTest注释测试我的存储库,但出现了一些奇怪的情况。 当我使用经典的时,一切正常,我的测试成功了。但是当我使用下面的生成器时,我的测试失败了。 测试应该成功,但其他测试没有成功,因为没有抛出关于约束有效性的异常。 例如,这里有一个失败的断言: Java语言AssertionError:预期测试将抛出org的实例。springframework。道。DataIntegrityV

  • 我的文件似乎被Git忽略了-文件是否已损坏?Git期望哪种文件格式、区域设置或区域性? 我的: 的输出: 我希望和不出现在“未跟踪文件”列表中。 我应该从哪里开始寻找解决这个问题?

  • 我有以下控制器: 我启用了Spring Actuctor的endpoint,甚至可以看到被忽略的endpoint是可用的: 编辑我添加了一个拦截器,使我能够查看目标将是什么。 是正确的: 对于并不期望参数,但spring仍然因此抛出错误这一事实,我无法全神贯注。

  • 问题内容: 以下代码是从文档中复制的。我应该能够查看所有信息日志。但是我没有。即使将setLevel设置为INFO,我也只能看到警告和以上内容。 为什么会这样呢?: 输出: 信息和调试消息到哪里去了? 问题答案: 更换线 与 它应该可以按预期工作。如果您不使用任何处理程序来配置日志记录(如您的帖子中所示,您只为记录器配置一个级别,但在任何地方都没有处理程序),则将获得一个“不得已使用”的内部处理程

  • 问题内容: 但是,当我删除WHERE时,查询会停止使用该键(即使我明确地强制使用该键也是如此) 有什么解决方法吗? 我意识到我在第二个示例中选择了整个表,但是为什么mysql突然决定它还是要忽略我的FORCE而不使用键?没有密钥,查询大约需要10分钟。 问题答案: FORCE有点用词不当。这是MySQL文档所说的(重点是我的): 您还可以使用FORCE INDEX,其作用与USE INDEX(in