【问题标题】:Record projection with another record projection用另一个记录投影记录投影
【发布时间】:2022-01-14 11:01:25
【问题描述】:

我遇到了嵌套投影的问题。 (内部投影)

根实体:

@Entity(name = "AAA")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class AAA{

    @Id
    private Long id;

    @OneToOne
    private BBB bbb;
}

BBB 看起来像这样:

@Entity(name = "BBB")
@NoArgsConstructor
@AllArgsConstructor
@Data
public class BBB{

    @Id
    private Long id;

    @Column(name = "name")
    private String name;

预测

public record AAAProjection(
       Long id, 
       BBBProjection bbb                            
) {
}

public record BBBProjection(
       Long id, 
       String name                            
) {
}

当我尝试使用这些投影进行查询时,会引发异常: org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class AAAProjection

在 Spring Boot Data JPA 的投影中有什么方法可以使用嵌套投影?

【问题讨论】:

    标签: java spring-boot hibernate spring-data-jpa spring-projections


    【解决方案1】:

    我使用投影遍历解决了这个问题,如下所示:

    public record AAAProjection(
           Long id, 
           Long bbbId,
           String bbbName                                                                         
    ) {
    }
    

    要从嵌套实体中获取字段,只需在投影中使用它的名称,这里是BBBProjection bbb,所以有如下模式: bbb<FieldName>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 2020-12-31
      • 2019-09-14
      • 2018-08-06
      • 2014-08-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      相关资源
      最近更新 更多