1

I have a class with multiple mapped superclasses

@EqualsAndHashCode(callSuper = true)
@Entity(name = "Supported_cars_usage")
@Data
@NoArgsConstructor
public class SupportedCarUsage extends SupportedUsageBase {

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "supported_car_id")
    private SupportedCar supportedCar;
}

@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class SupportedUsageBase extends BaseEntity {

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id")
    User user;

    boolean allowed;

}

I am trying to select for, search by and group by some nested field. For the beginning I found I can refer nested field at all.

I tried variations like

Query query = em.createQuery("select supportedCar, allowed from Supported_cars_usage");

Query query = em.createQuery("select supportedCar, super.allowed from Supported_cars_usage");

Query query = em.createQuery("select supportedCar, SupportedUsageBase.allowed from Supported_cars_usage");

but failed with various errors. Is these some syntax to refer fields inside mapped superclass?

Database itself is created normally.

Getters are present and created automatically with Lombok (see @Data annotation).

I wish not to use native queries.

Dims
  • 47,675
  • 117
  • 331
  • 600

1 Answers1

0

You can write something like this:

List<Object[]> result = em.createQuery("select s.supportedCar, s.allowed from Supported_cars_usage s").getResultList();
SternK
  • 11,649
  • 22
  • 32
  • 46