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

Кто-нибудь может подтвердить, если это невозможно или мы делаем что-то не так? Спасибо!

0 ответов

Другие вопросы по тегам