当前位置: 首页 > 知识库问答 >
问题:

无法获取任何字段

麻烨
2023-03-14

我使用spring boot,带有jpa和hibernate

@Entity
@IdClass(SamplesPK.class)
public class Samples{
    ..
    @Id
    @ManyToOne
    @JoinColumns({
        @JoinColumn(name = "sampling_id", referencedColumnName = "id"),
        @JoinColumn(name = "sampling_year", referencedColumnName = "year")})
    private Samplings sampling;
    ...
}

@Entity
@IdClass(SamplingsPK.class)
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Samplings {
    @OneToOne
    private Products product;
}

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class Products{
    ...
    @ManyToOne(fetch = FetchType.LAZY)
    private ProductTypes productType;
}

@Entity
@DiscriminatorValue("TraditionalProducts")
public class TraditionalProducts extends Products {
    ...
}

@Entity
@DiscriminatorValue("GranulateProducts")
public class GranulateProducts extends Products  {
     @ManyToMany(mappedBy="granulateProducts")
    private Set<Suppliers> suppliers = new HashSet<>();
}
 @Query(value = "select s from Samples s Join Fetch s.sampling sp Join Fetch sp.machine m Join Fetch sp.product p Join Fetch p.productType")
 public Page<Samples> findAllFullSample(Pageable pageable);

原因:org.hibernate.QueryException:查询指定的联接提取,但提取的关联的所有者不在选择列表[FromElement{explicit,not a collection join,fetch join,fetch non-lazy属性,ClassAlias=sp,Role=Com.lcm.Model.Samples.Samplings,TableName=Samplings,TableName=Samplings,TableAlias=Samplings,TableAlias=Samplings,TableAlias=Samplings1_,Origin=samples0_,Columns={

如果我删除了所有的fetch命令,它是工作的,为什么我不能使用fetch?

共有1个答案

吴才俊
2023-03-14

您可以在分页时使用fetch,但您将需要为count Row放置一个查询...

查看此帖子https://codingexplained.com/coding/java/spring-framework/fetch-query-not-working-spring-data-jpa-pageable#comment-293535

 类似资料:
  • 我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误 下面是我们在server.js上的代码 这些是我们package.json中包含的脚本 希望得到一些答案和建议。这些代码在本地运行,没有任何问题

  • 我收到如下错误消息: 错误错误:未捕获(promise中):错误:无法匹配任何路由。URL段:“主页”错误:无法匹配任何路由。URL段:ApplyRedirects.push../node_modules/@angular/router/fesm5/router.js.ApplyRedirects。CatchSubscriber上的noMatchError(router.js:2469)。Catc

  • 问题内容: 我有一个执行此功能的数据库助手: 它从中提取的表如下所示: 在我的主要活动中,我尝试这样做并得到一个空指针… 有人知道我的问题是什么吗?我在较早的时候将数据放入数据库: 尝试了一下,仍然没有,我想选择“课程”中的所有“名称”值。没头绪…失去希望。 问题答案: 应该是这个 说明: api中的方法已定义为 公共游标查询(字符串表,字符串[]列,字符串选择,字符串[] selectionAr

  • 我使用硒登录网站 https://launch.stellar.org/#/login。但我无法在新页面中获取任何元素。 这里是代码: 线程“main”org.openqa.selenium.InvalidSelectorException中的异常:给定的选择器btn btn-default stellar-按钮ng-绑定无效或不会导致WebElement。发生以下错误:InvalidSelect

  • 对于我的RESTAPI,我使用jersey和ExceptionMapper来捕获全局异常。我的应用程序抛出的所有异常都运行良好,但我无法捕获jackson抛出的异常。 例如,我的一个endpoint接受包含枚举的对象。如果请求中的Json有一个不在枚举jersey中的值,则抛出此异常 尽管我创造了这个映射器 代码永远不会到达这个映射器。 为了捕捉这些异常,我们需要做些什么吗? 编辑说明:我尝试过让

  • 问题内容: 我有以下实体: 还有以下EJB: 调用persist时,将引发具有以下根本原因的异常: 这是GlassFish 4.1的完整日志: 这是怎么引起的,我该如何解决? 问题答案: 我有同样的问题。这个错误似乎是从HB 4.3.6开始的,并且一直存在,我正在尝试4.3.10。具有相同的结果。 在我看来,访问实体字段的方式在HB 4.3.6+中已更改,可能与类加载器有关。在HB 4.3.6之前