【发布时间】:2012-04-16 13:42:45
【问题描述】:
早上好。我一直在寻找试图回答这个问题的方法。
如果您的表具有指向另一个表的外键,并且您想要两个表的结果,则使用基本 sql 对外键进行内部连接,您将获得您请求的所有结果信息。当您在外键上生成 JPA 实体时,您会在外键列上获得 @oneToone 注释、@oneToMany、@ManyToMany、@ManyToOne 等。我在外键上有@oneToMany,在相关表列的主键上有相应的@ManyToOne 我还在正确的列上有@joinedON 注释...我还有一个基本的命名查询,它将从第一个中选择所有内容桌子。我需要像在基本 sql 中那样做一个连接来从两个表中获取信息吗?或者我有这些注释的事实会为我拉回这些记录吗?要清楚,如果我有基于外键关系与表 B 相关的表 A,并且我想要两个表中的记录,我将根据外键将表 A 连接到 B 或
Select * From A inner Join B on A.column2 = B.column1
或其他一些类似的废话(如果它不完全正确,请原谅我的 sql,但你明白了)...... 该查询将从 A 和 B 中选择所有列,其中这两个选定的列... 这是我正在使用的命名查询....
@NamedQuery(name="getQuickLaunch", query = "SELECT q FROM QuickLaunch q")
这就是我在无状态会话 bean 中的调用方式...
try
{
System.out.println("testing 1..2..3");
listQL = emf.createNamedQuery("getQuickLaunch").getResultList();
System.out.println("What is the size of this list: number "+listQL.size());
qLaunchArr = listQL.toArray(new QuickLaunch[listQL.size()]);
}
现在该调用返回表 A 的所有列,但缺少表 B 的列。我的第一反应是更改查询以连接两个表……但这让我想到什么是使用 JPA 的重点是,如果我只是在不同的地方编写与我将要编写的查询相同的查询。另外,我不想忽略一些简单的事情。那么你说堆栈溢出爱好者呢?使用JPA如何取回joined query的所有数据?
【问题讨论】:
标签: jpa-2.0 named-query