querydsl/JPA b.anyMappedSuperClass.instanceof проверка состояния типа b вместо любого
У нас есть абстрактный класс A с конкретными подклассами A1 и A2, которые имеют свою собственную таблицу:
@MappedSuperclass
public abstract class A
@Entity
@Table(name = "a1")
public class A1 extends A
При ссылке на A из других сущностей мы отображаем его через @Any со столбцом id и type:
@Entity
@Table(name = "b")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type")
public abstract class B {
@Any(metaColumn = @Column(name = "a_type"))
@AnyMetaDef(idType = "integer",
metaType = "string",
metaValues = { @MetaValue(targetEntity = A1.class, value = "A1"),
@MetaValue(targetEntity = A2.class, value = "A2")})
@JoinColumn(name = "a_id")
private A a;
Без необходимости запрашивать атрибуты A, мы хотели бы иметь возможность по крайней мере проверить тип A, поскольку он хранится в столбце b.a_type:
query.select(qB.id).from(qB).where(qB.a.instanceOf(A1.class))).fetch();
Код компилируется, но генерирует SQL, пытаясь проверить столбец b.type = null вместо b.a_type = 'A1'
select b0_.`id` as col_0_0_ from b b0_ where b0_.`type`= null
Кто-нибудь может подтвердить, если это невозможно или мы делаем что-то не так? Спасибо!