Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Spring数据JPA中的联接查询_Hibernate_Jpa 2.0_Spring Data Jpa - Fatal编程技术网

Hibernate Spring数据JPA中的联接查询

Hibernate Spring数据JPA中的联接查询,hibernate,jpa-2.0,spring-data-jpa,Hibernate,Jpa 2.0,Spring Data Jpa,我想写一个像这样的连接 Select a.id,a.desc,b.desc from A a left join B b on a.MEDIA_ID = b.ID 我创建了两个实体A和B,并创建了crudepository 现在,在crudepository中需要编写一个方法,该方法可以使用上述连接获取数据 此外,我还在实体a中创建了一个临时变量(将其命名为“b说明”) 如何在Spring数据JPA中实现这一点 注意:我需要加入只是为了找出实体B的特定id(B中的主键和a中映射为“媒体id”

我想写一个像这样的连接

Select a.id,a.desc,b.desc from A a  left join B b on a.MEDIA_ID = b.ID
我创建了两个实体A和B,并创建了
crudepository

现在,在crudepository中需要编写一个方法,该方法可以使用上述连接获取数据

此外,我还在实体a中创建了一个临时变量(将其命名为“b说明”) 如何在Spring数据JPA中实现这一点

注意:我需要加入只是为了找出实体B的特定id(B中的主键和a中映射为“媒体id”)的“描述”(B中的一列)


提前感谢

这里是一个使用SpringData进行连接查询的示例

public final static String FIND_WITH_DESC_QUERY = "SELECT a,b.desc as  bDescription " + 
                                                   "FROM A a LEFT JOIN a.descriptions b " +
                                                   "WHERE a.mediaID = :id";


@Query(FIND_WITH_DESC_QUERY)
public List<Media> findWithDescription(@Param("id") Long id);
public final static String FIND_WITH_DESC_QUERY=“SELECT a,b.DESC as bDescription”+
“从A左连接A.b”+
“其中a.mediaID=:id”;
@查询(使用查询查找)
公共列表findWithDescription(@Param(“id”)Long id);
注:

  • 说明
    是实体A和B之间关系的映射
  • 这假设
    @OneToMany Set descriptions()

谢谢你,本。我想以另一种方式实现。表B有一个我想保留在where条件下的id,比如“选择a,C.Description作为CDdescription从a左连接a.descriptions C where R.media_id=C.id”;当我这样做的时候,它不工作了,在服务器启动期间,它抛出了一个映射异常,说“a未映射”,在类a上有@Entity注释吗?(要提供有关您的用例的更多信息:请编辑问题)是的,它就在那里。当我运行服务器时,它会抛出映射错误。请确保在查询中使用类名,而不是表名(如果它们不同),用于实体之间的关系,我将其命名为@OneToMany@JoinColumn(name=“Description”)Set cacheMedia;在存储库中,我的查询看起来像“从左连接A.cacheMedia C中选择A,C.Description,其中R.media_Id=C.Id”。但我仍然没有得到结果,而是得到了BadGrammer异常。别忘了将您选择的答案标记为已接受。