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

没有@Id的休眠/持久性

严承允
2023-03-14
问题内容

我有一个数据库视图,该视图产生的结果集没有真正的主键。我想使用Hibernate /
Persistence将结果集映射到Java对象上。当然,因为没有PK,所以我不能用修饰任何字段@Id

部署时,Hibernate抱怨缺少该组件@Id。我该如何解决?


问题答案:

如果存在使行唯一的列组合,请围绕列组合建模主键类。如果没有,您基本上就不走运了-但您应该重新检查视图的设计,因为它可能没有意义。

有两种不同的方法:

@Entity
public class RegionalArticle implements Serializable {

    @Id
    public RegionalArticlePk getPk() { ... }
}

@Embeddable
public class RegionalArticlePk implements Serializable { ... }

要么:

@Entity
public class RegionalArticle implements Serializable {

    @EmbeddedId
    public RegionalArticlePk getPk() { ... }
}

public class RegionalArticlePk implements Serializable { ... }

详细信息在这里:http :
//docs.jboss.org/ejb3/app-
server/HibernateAnnotations/reference/en/html_single/index.html#d0e1517

这是描述类似问题的帖子:http
:
//www.theserverside.com/discussions/thread.tss?thread_id=22638



 类似资料:
  • 问题内容: 我有一个数据库视图,该视图产生的结果集没有真正的主键。我想使用Hibernate / Persistence将结果集映射到Java对象上。当然,因为没有PK,所以我不能用修饰任何字段。 部署时,Hibernate抱怨缺少该组件。我该如何解决? 问题答案: 如果存在使行唯一的列组合,请围绕列组合建模主键类。如果没有,您基本上就不走运了-但您应该重新检查视图的设计,因为它可能没有意义。 有

  • 问题内容: 我有一个应用程序想要对与Hibernate和/或持久性有关的可能问题进行测试验证。 还有什么其他问题? 我如何(从字面上)复制它们?您如何从他们那里康复呢? 明确地说:我正在谈论多线程集群环境(最复杂的集群环境)。 我的唯一: 复制: 加载对象。 使用HQL进行更新。 尝试更新(保存)已加载的对象。 句柄:不确定… 问题答案: 延迟加载是您将遇到的主要问题之一,尤其是如果遵循标准的DA

  • 问题内容: 我面临的问题是Hibernate的一个简单问题,但无法解决(无法访问的Hibernate论坛当然无济于事)。 我有一个简单的课程想继续学习,但是请继续学习: 持久化类的相关代码为: 实际的运行代码很简单: 我在注解中尝试了一些“策略”,但似乎不起作用。初始化也无济于事!(例如)。 谁能给我一些启示? 编辑2: 确认:不能解决问题 求助: 重新创建数据库解决了问题 问题答案: 有时,即使

  • 问题内容: JodaTime有一个提供Hibernate持久性的库。最近,我开始研究Joda-Money,开始了解如何使用hibernate来保持这种状态,而我看不到任何库。 有什么建议么? 问题答案: 好吧,我把你的意见,并炮制了钱的自定义类型为乔达库中的定义,作为参考的人可以看看它在这里,在这里使用和测试自定义类型在这里

  • 问题内容: 我使用Hibernate制作了一个示例应用程序。我的要求是表上没有主键。我只需要从应用程序中选择查询。我知道应该有一个主键,但是我所引用的表没有它。 它有大约5万条记录。因此,修改表以添加ID列将看不到可行的选项。 有可能吗 问题答案: Hibernate 要求 实体表具有主键。故事结局。 在谈论数据库时,5万条记录根本就不多。 我的建议:在表中添加一个自动增量整数PK列。您会对它的速

  • 问题内容: 在我的MySQL数据库中,有“ gender enum(’male’,’female’)”列 我创建了枚举“ com.mydomain.myapp.enums.Gender”,并在我的实体中定义了“性别”。 现在,我想将枚举类型保留在我的MySQL数据库中,但是当我启动应用程序时,我得到: 性别列在MyApp.Person中的列类型错误。找到:枚举,预期:整数 为什么是这样?就像我用“