【问题标题】:How to fetch data from multiples tables in Hibernate?如何从 Hibernate 中的多个表中获取数据?
【发布时间】:2014-03-20 06:28:15
【问题描述】:

我是休眠新手,想知道一些事情。我想在hibernate中实现下面的查询,请指导一下。

SELECT p.num_is_active
FROM ins.cnfgtr_user_log t, ins.service_user_auth p
WHERE t.source = 'GC'
and t.tokenid = p.txt_auth_token
and t.sessionid = 100000000195756
and t.userid = p.txt_user_id
and t.userid = 'MASTERADMIN'

我还想知道我是否必须为这两个表维护两个单独的 pojo?这个pojo需要完整吗?我的意思是它们需要包含表的所有列还是只包含此查询所需的列?

【问题讨论】:

  • 简而言之,是的。如果要使用休眠,则需要为每个表设置 POJO。这就是休眠的概念。 POJO 到 Tables 等等。

标签: java hibernate jakarta-ee spring-mvc hibernate-mapping


【解决方案1】:

问:我必须为这两个表维护两个单独的 POJO 吗?

回答:是的,你想。在 ORM 中,出于模块化原因,每个表都将由单独的 POJO 表示。

问:这个 POJO 需要完整吗?

答案:不需要。除了标记为“非空”的列。您可以使用 JPA/Hibernate Joins 进行查询。

希望这有帮助!

【讨论】:

  • 感谢balaji,但确切地说,我想知道这个查询在hibernate中的语法。你能帮我吗?
  • 在 Hibernate 中,您可以选择 HQL 或我们传统的原生 sql(与您发布的查询相同)。首先让它与这个查询一起工作,然后转移到 HQL,因为 HQL 很简单。 Ter 是另一种称为条件的选项,它是最面向对象的查询方式。
  • 另一件事 Balaji 假设在 Hibernate 中没有映射某些表或视图,我们可能需要对其执行查询,如何实现?
  • 如果您使用的是休眠查询语言 (HQL) 或 Criteria API,您的所有表都应该被映射,否则 Hibernate 引擎不知道资源的其他部分,并且会给您错误消息。但是如果使用本机 SQL,您不需要映射任何东西...... session.createQuery() 用于 HQL,seesion.createNativeQuery() 用于我们不需要映射的传统 sql 查询。
猜你喜欢
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
相关资源
最近更新 更多