0

特定の列でグループ化するリポジトリ メソッドのネイティブ クエリを作成しました。

idグループ化が壊れるため、グループ化できません。

      @Query(nativeQuery = true, value = "SELECT description, model_year, take_rate, number " +
          "FROM foo f " +
          "INNER JOIN bar b " +
          "ON b.cycle_plan_code = b.cycle_plan_code " +
          "WHERE b.programme = :programme " +
          "AND b.build_event = :buildEvent " +
          "AND f.vehicle_line = :vehicleLine " +
          "GROUP BY description, take_rate, model_year, number")
  List<FooEntity> findAllFooByBar(@Param("vehicleLine") String vehicleLine, @Param("programme") String programme,
                                          @Param("buildEvent") String buildEvent);

私のエンティティには@Id列と他のいくつかがあります

@Table(name = "foos")
public class FooEntity {

  @Id
  private Long id;

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

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

  @Column(name = "vehicle_line", nullable = true)
  private String vehicleLine;

  @Column(name = "number")
  private Integer number;

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

  @Column(name = "take_rate")
  private double takeRate;

}

リポジトリ メソッドにアクセスすると、休止状態がスローされます

o.h.engine.jdbc.spi.SqlExceptionHelper   : Column 'id' not found.

これをselect句に追加してハックしようとしました

SELECT 0 as id

vehicle_lineこれは進行しますが、クエリがエンティティの他の列を返さないと不平を言うので、model_year それらをすべてクエリに追加して機能させる必要がありました。

注釈でフラグを試しましたnullable = trueが、選択句から列を省略できませんでした。

関心のある一部の列のみが返されるエンティティを返すにはどうすればよいですか?

4

1 に答える 1