私はJPAとJPAエンティティの階層を持っては継承に参加しましたqueryByExampleにこのようなPageRequest
:それは私がを設定している場合を除いて、正常に動作します春データページング可能ソートJPA弁別フィールド上
Example<Product> example = ...
PageRequest pageRequest = ...
Page<Product> productPage = productRepository.findAll(example, pageRequest);
pageRequest
のを「タイプ」(@DiscriminatorColumn
)としてください。
- が直接エンティティにタイプフィールドを追加します。
私がしようとしました。この方法ではクエリはうまく動作しますが、永続操作は失敗し、
org.postgresql.util.PSQLException: The column index is out of range: 11, number of columns: 10
で失敗します。 - 私は、
@Transient
として持続作品をこのフィールドをマークしますが、クエリは私にこの例外を与える場合:Unable to locate Attribute with the the given name [type] on this ManagedType [...AbstractEntityWithDate]
(AbstractEntityWithDateがcreationDate
とmodificationDate
を含む、Product
の@MappedSuperclass
です)
私はspring-を使用していますバージョン1.4.5.RELEASEは、spring-data-jpa(1.10.8.RELEASE)とhibernate(5.0.12.Final)の依存関係管理バージョンでサポートされています。
ディスクリミネータフィールドによる並べ替えは、Pageable
でどのように設定できますか? (私はこのためにカスタム@Query
を書いたくありません)。
JPQLでは弁別子フィールドを使用できないため、Springでは使用できません。クラス表現がない列を使用する唯一の方法は、ネイティブクエリを使用することです。 –
ありがとうございます!私はこれに完全に同意していませんが(JPAとt.classのタイプ(t)が休止状態の回避策としてあります)、この回避策を見つける手助けをしました: https://theodoreyoung.wordpress.com/2011/08/ 08/jpa-and-hibernate-problems-with-polymorphic-queries/ それは私のために働くように見え、しばらくの間より良い答えが到着しなければ、私は答えとしてこれを掲示するでしょう。 –