Кто-нибудь может мне помочь? Я пытаюсь использовать JPA с данными Spring с мягким удалением, используя предложение where в унаследованном классе. Однако кажется, что не учитывается наследование, когда класс Pageable генерирует свой запрос для подсчета количества строк.
Класс ClassA (базовый класс): <- здесь удаленный столбец </p>
@Entity
@Table(name = "SYS_ELEMENT")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DTYPE", discriminatorType = DiscriminatorType.STRING, length = 63) @DiscriminatorValue("Element")
@SQLDelete(sql = "UPDATE SYS_ELEMENT SET DELETED = 1, DELETED_ID = ID, DELETED_VERSION = VERSION WHERE ID = ? AND VERSION = ? ", check = ResultCheckStyle.COUNT)
@Where(clause="DELETED = 0" )
public class Element extends EntityBase {
}
ClassB class (Inherited class):
@Entity
@Table(name = "SYS_FORM")
@DiscriminatorValue("Form")
public class Form extends Element {
}
Я загружаю следующий код:
Pageable pageable = PageRequest.of(0, 10);
Page page = service.findByAll(pageable);
И это мое исключение:
Hibernate:
/* select
count(generatedAlias0)
from
Form as generatedAlias0 */ select
count(form0_.id) as col_0_0_
from
sys_form form0_
where
(
form0_1_.DELETED = 0
)
2020-07-09 21:23:10.123 WARN 22464 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 4104, SQLState: S0001
2020-07-09 21:23:10.123 ERROR 22464 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : The multi-part identifier "form0_1_.DELETED" could not be bound.
could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
org.hibernate.exception.SQLGrammarException: could not extract ResultSet
[Ljava.lang.StackTraceElement;@748df19a
Если я удалите предложение where, оно работает. Я не уверен, что это проблема с пружинными данными JPA или JPA.
По запросу, вот простой пример: