当前位置: 首页 > 面试题库 >

如何在JPA / Hibernate中将@Id与字符串类型一起使用?

韩欣怿
2023-03-14
问题内容

我有一个包含字符串类型主键的实体。该实体模型如下:

@Entity
public class MyEntity {

@Id
@Column(name="PR_KEY", unique=true)
private String prKey;

....
....

}

但是我面临说TypeMismatch的问题。

org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class java.lang.String, got class java.lang.Long

问题答案:

如果您未指定ID生成策略,则Hibernate将使用GenerationType.AUTO。这将导致

AUTO-标识列,序列或表,具体取决于基础数据库。

如果你看看这里,你会发现所有的生成类型的IDSlongshortint,不是类型String

假设您要使用StringUUID作为ID,则可以使用

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "PR_KEY")
private String prKey;


 类似资料:
  • 我有以下的类描述片段: 此代码在HiberNate 4上不起作用,因为不支持 我从Joda Time看到了关于如何使用LocalDateTime的建议,但我使用的是Java 8。

  • 问题内容: 我在理解Hibernate如何处理泛型时遇到一些麻烦,并且想知道实现我的目标的最佳方法。 给定一个简单的通用实体: 在进行hibernate初始化时,出现异常: 我几乎可以肯定,这是因为我没有给hibernate一些可能的限制条件。我知道你可以指定的东西,如上面的注释,但你失去使用泛型的灵活性。我可以使用注解限制可接受的泛型的范围吗?例如:如果我想要class ,该类从抽象类继承而来,

  • 问题内容: 所以我试图用一个字符串和一个传递的变量(是一个数字)制成一个字符串。我怎么做? 我有这样的事情: 那么,如何将“ horseThumb”和一个id放入一个字符串中呢? 我尝试了所有各种选项,还用谷歌搜索,除了学习可以在这样的字符串中插入变量<-(对我不起作用,我不知道为什么),我发现没有任何用处。因此,任何帮助将不胜感激。 问题答案: 您的代码是正确的。也许您的问题是您没有将ID传递给

  • 问题内容: 这是课程: 现在,我试图从类中“反射”此方法: 问题答案: 只有一个。 另一种选择是。 其他原语也是如此。

  • 问题内容: 标题不言自明。 我很高兴听到解决方案,谢谢。 问题答案: 到目前为止,有一种比列出的方法更短的方法:

  • 问题内容: 我有一个美国所有州的枚举列表,如下所示: 在测试文件中,我将从包含状态的文本文件中读取输入。由于它们是字符串,因此如何将其与枚举列表的值进行比较,以便将值分配给我设置为的变量: 我了解我需要浏览枚举列表。但是,由于值不是字符串类型,如何比较?这就是我盲目输入的内容。我不知道这是否正确。 问题答案: 试试这个 您可能要处理IllegalArgumentException,如果“ s”值与