import dev.caskeleton.adapter.outbound.persistence.hibernate.batch.*; import dev.caskeleton.adapter.outbound.persistence.springdata.SpecificationPolicy; import jakarta.persistence.*; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.Specification; public class JpaQueryHibernateBoundaryProbe { static class PropertyIdentityEntity { private Long id; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long getId() { return id; } public void setId(Long id) { this.id = id; } } public static void main(String[] args) { JpaBatchProfile profile = JpaBatchProfile.uniform("probe.batch", 10); BatchExecutionResult oneBatch = new BatchExecutionResult(profile, 10, 1, 1, 1, 10); System.out.println("oneJdbcBatch.batched=" + oneBatch.batched()); HibernateBatchConfigurationGuard guard = new HibernateBatchConfigurationGuard(); System.out.println("propertyIdentityDetected=" + guard.usesIdentityGeneration(PropertyIdentityEntity.class)); try { guard.validate(profile, PropertyIdentityEntity.class); System.out.println("propertyIdentityValidation=PASSED"); } catch (Exception e) { System.out.println("propertyIdentityValidation=" + e.getClass().getSimpleName()); } Specification noPredicate = (root, query, cb) -> null; try { SpecificationPolicy.requireBounded(noPredicate, PageRequest.of(0, 20), null); System.out.println("nonNullNullPredicateSpecification=PASSED"); } catch (Exception e) { System.out.println("nonNullNullPredicateSpecification=" + e.getClass().getSimpleName()); } } }