Spring Data JPA gibt ein unerwartetes Ergebnis mit scrollbasierter Abfrage- und Operationspriorität zurück
Posted: 03 Jan 2025, 06:12
Ich habe diese Entitäten
und dies ist das entsprechende Repository
Dies ist, was sich derzeit in der Tabelle Item befindet. Es ist eine Zeile (es ist das Ergebnis eines Dumps)
Wie Sie sehen können, ist headOf 1000L.
Wenn ich nun diese Funktion aufrufe, findByHeadOfIdAndAddedDateNotNullOrDurationNotNull mit den folgenden Werten
headOfId: 0
scrollPosition: ScrollPosition.of(...)
PageRequest.of(0, 10)
es gibt mir die eine Zeile zurück, die dort drin ist. Das erwarte ich nicht, denn die headOfId, die ich übergebe, ist 0L und nicht 1000L.
Ich kann keine @Query Annotation, dann erhalte ich Folgendes
Abfrage für öffentliche Zusammenfassung org.springframework.data.domain.Window konnte nicht erstellt werden org...jpa.repository.ItemRepository.findByHeadOfIdAndAddedDateNotNullOrDurationNotNull(long,org.springframework.data.domain.ScrollPosition,org.springframework.data.domain.Pageable);
Grund: Scroll-Abfragen werden mit String-basiert nicht unterstützt Abfragen
Gibt es eine Lösung dafür?
Code: Select all
@Entity
@Table(name = "Item")
class Item(
@Column(name = "name", nullable = false)
var name: String,
@Column(name = "added_date", columnDefinition = "TIMESTAMP WITH TIME ZONE", nullable = true)
var addedDate: ZonedDateTime? = null,
@Column(name = "duration", nullable = true)
var duration: Int? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "head_of_id", nullable = false)
val headOf: HeadOf,
) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = 0
}
@Entity
@Table(name = "head_of")
class HeadOf(
@Column(name = "company", nullable = false)
var company: String,
@Column(name = "city", nullable = false)
var city: String,
@Column(name = "age", nullable = true)
var age: Int?
) {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = 0
}
Code: Select all
interface ItemRepository : JpaRepository {
fun findByHeadOfIdAndAddedDateNotNullOrDurationNotNull(
headOfId: Long,
position: ScrollPosition,
pageable: Pageable,
): Window
}
Code: Select all
INSERT INTO public.item VALUES (1, 'Some fancy title', '2024-12-31 07:14:42.955789+00', NULL, 1000);
Wenn ich nun diese Funktion aufrufe, findByHeadOfIdAndAddedDateNotNullOrDurationNotNull mit den folgenden Werten
headOfId: 0
scrollPosition: ScrollPosition.of(...)
PageRequest.of(0, 10)
es gibt mir die eine Zeile zurück, die dort drin ist. Das erwarte ich nicht, denn die headOfId, die ich übergebe, ist 0L und nicht 1000L.
Ich kann keine @Query Annotation, dann erhalte ich Folgendes
Abfrage für öffentliche Zusammenfassung org.springframework.data.domain.Window konnte nicht erstellt werden org...jpa.repository.ItemRepository.findByHeadOfIdAndAddedDateNotNullOrDurationNotNull(long,org.springframework.data.domain.ScrollPosition,org.springframework.data.domain.Pageable);
Grund: Scroll-Abfragen werden mit String-basiert nicht unterstützt Abfragen
Gibt es eine Lösung dafür?