openjdk version "21.0.11" 2026-04-21 LTS
OpenJDK Runtime Environment Corretto-21.0.11.10.1 (build 21.0.11+10-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.11.10.1 (build 21.0.11+10-LTS, mixed mode, sharing)

COMMAND /Users/magicliang/.sdkman/candidates/java/21.0.11-amzn/bin/java -cp /Users/magicliang/Desktop/Programming/git/hexo-blog/examples/spring-framework-lab/ecosystem-lab/target/classes:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.5.6/spring-boot-starter-web-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter/3.5.6/spring-boot-starter-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot/3.5.6/spring-boot-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.5.6/spring-boot-autoconfigure-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-logging/3.5.6/spring-boot-starter-logging-3.5.6.jar:/Users/magicliang/.m2/repository/ch/qos/logback/logback-classic/1.5.18/logback-classic-1.5.18.jar:/Users/magicliang/.m2/repository/ch/qos/logback/logback-core/1.5.18/logback-core-1.5.18.jar:/Users/magicliang/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.24.3/log4j-to-slf4j-2.24.3.jar:/Users/magicliang/.m2/repository/org/apache/logging/log4j/log4j-api/2.24.3/log4j-api-2.24.3.jar:/Users/magicliang/.m2/repository/org/slf4j/jul-to-slf4j/2.0.17/jul-to-slf4j-2.0.17.jar:/Users/magicliang/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/Users/magicliang/.m2/repository/org/springframework/spring-core/6.2.11/spring-core-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/spring-jcl/6.2.11/spring-jcl-6.2.11.jar:/Users/magicliang/.m2/repository/org/yaml/snakeyaml/2.4/snakeyaml-2.4.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-json/3.5.6/spring-boot-starter-json-3.5.6.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.19.2/jackson-databind-2.19.2.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.19.2/jackson-annotations-2.19.2.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.19.2/jackson-core-2.19.2.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.19.2/jackson-datatype-jdk8-2.19.2.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.19.2/jackson-datatype-jsr310-2.19.2.jar:/Users/magicliang/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.19.2/jackson-module-parameter-names-2.19.2.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/3.5.6/spring-boot-starter-tomcat-3.5.6.jar:/Users/magicliang/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.46/tomcat-embed-core-10.1.46.jar:/Users/magicliang/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.46/tomcat-embed-el-10.1.46.jar:/Users/magicliang/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.46/tomcat-embed-websocket-10.1.46.jar:/Users/magicliang/.m2/repository/org/springframework/spring-web/6.2.11/spring-web-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/spring-beans/6.2.11/spring-beans-6.2.11.jar:/Users/magicliang/.m2/repository/io/micrometer/micrometer-observation/1.15.4/micrometer-observation-1.15.4.jar:/Users/magicliang/.m2/repository/io/micrometer/micrometer-commons/1.15.4/micrometer-commons-1.15.4.jar:/Users/magicliang/.m2/repository/org/springframework/spring-webmvc/6.2.11/spring-webmvc-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/spring-context/6.2.11/spring-context-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/spring-expression/6.2.11/spring-expression-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-security/3.5.6/spring-boot-starter-security-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/spring-aop/6.2.11/spring-aop-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/security/spring-security-config/6.5.5/spring-security-config-6.5.5.jar:/Users/magicliang/.m2/repository/org/springframework/security/spring-security-core/6.5.5/spring-security-core-6.5.5.jar:/Users/magicliang/.m2/repository/org/springframework/security/spring-security-crypto/6.5.5/spring-security-crypto-6.5.5.jar:/Users/magicliang/.m2/repository/org/springframework/security/spring-security-web/6.5.5/spring-security-web-6.5.5.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/3.5.6/spring-boot-starter-data-jpa-3.5.6.jar:/Users/magicliang/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/3.5.6/spring-boot-starter-jdbc-3.5.6.jar:/Users/magicliang/.m2/repository/com/zaxxer/HikariCP/6.3.3/HikariCP-6.3.3.jar:/Users/magicliang/.m2/repository/org/springframework/spring-jdbc/6.2.11/spring-jdbc-6.2.11.jar:/Users/magicliang/.m2/repository/org/hibernate/orm/hibernate-core/6.6.29.Final/hibernate-core-6.6.29.Final.jar:/Users/magicliang/.m2/repository/jakarta/persistence/jakarta.persistence-api/3.1.0/jakarta.persistence-api-3.1.0.jar:/Users/magicliang/.m2/repository/jakarta/transaction/jakarta.transaction-api/2.0.1/jakarta.transaction-api-2.0.1.jar:/Users/magicliang/.m2/repository/org/jboss/logging/jboss-logging/3.6.1.Final/jboss-logging-3.6.1.Final.jar:/Users/magicliang/.m2/repository/org/hibernate/common/hibernate-commons-annotations/7.0.3.Final/hibernate-commons-annotations-7.0.3.Final.jar:/Users/magicliang/.m2/repository/io/smallrye/jandex/3.2.0/jandex-3.2.0.jar:/Users/magicliang/.m2/repository/com/fasterxml/classmate/1.7.0/classmate-1.7.0.jar:/Users/magicliang/.m2/repository/net/bytebuddy/byte-buddy/1.17.7/byte-buddy-1.17.7.jar:/Users/magicliang/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/4.0.2/jakarta.xml.bind-api-4.0.2.jar:/Users/magicliang/.m2/repository/jakarta/activation/jakarta.activation-api/2.1.4/jakarta.activation-api-2.1.4.jar:/Users/magicliang/.m2/repository/org/glassfish/jaxb/jaxb-runtime/4.0.5/jaxb-runtime-4.0.5.jar:/Users/magicliang/.m2/repository/org/glassfish/jaxb/jaxb-core/4.0.5/jaxb-core-4.0.5.jar:/Users/magicliang/.m2/repository/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.jar:/Users/magicliang/.m2/repository/org/glassfish/jaxb/txw2/4.0.5/txw2-4.0.5.jar:/Users/magicliang/.m2/repository/com/sun/istack/istack-commons-runtime/4.1.2/istack-commons-runtime-4.1.2.jar:/Users/magicliang/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar:/Users/magicliang/.m2/repository/org/antlr/antlr4-runtime/4.13.0/antlr4-runtime-4.13.0.jar:/Users/magicliang/.m2/repository/org/springframework/data/spring-data-jpa/3.5.4/spring-data-jpa-3.5.4.jar:/Users/magicliang/.m2/repository/org/springframework/data/spring-data-commons/3.5.4/spring-data-commons-3.5.4.jar:/Users/magicliang/.m2/repository/org/springframework/spring-orm/6.2.11/spring-orm-6.2.11.jar:/Users/magicliang/.m2/repository/org/springframework/spring-tx/6.2.11/spring-tx-6.2.11.jar:/Users/magicliang/.m2/repository/org/slf4j/slf4j-api/2.0.17/slf4j-api-2.0.17.jar:/Users/magicliang/.m2/repository/org/springframework/spring-aspects/6.2.11/spring-aspects-6.2.11.jar:/Users/magicliang/.m2/repository/org/aspectj/aspectjweaver/1.9.22.1/aspectjweaver-1.9.22.1.jar:/Users/magicliang/.m2/repository/org/postgresql/postgresql/42.7.7/postgresql-42.7.7.jar:/Users/magicliang/.m2/repository/org/checkerframework/checker-qual/3.49.3/checker-qual-3.49.3.jar:/Users/magicliang/.m2/repository/org/aspectj/aspectjtools/1.9.22.1/aspectjtools-1.9.22.1.jar:/Users/magicliang/.m2/repository/org/aspectj/aspectjrt/1.9.22.1/aspectjrt-1.9.22.1.jar blog.spring.ecosystem.DataLab
17:43:29.163 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate -- Bootstrapping Spring Data JPA repositories in DEFAULT mode.
17:43:29.204 [main] INFO org.springframework.data.repository.config.RepositoryConfigurationDelegate -- Finished Spring Data repository scanning in 31 ms. Found 1 JPA repository interface.
17:43:29.325 [main] INFO org.hibernate.jpa.internal.util.LogHelper -- HHH000204: Processing PersistenceUnitInfo [name: default]
17:43:29.360 [main] INFO org.hibernate.Version -- HHH000412: Hibernate ORM core version 6.6.29.Final
17:43:29.378 [main] INFO org.hibernate.cache.internal.RegionFactoryInitiator -- HHH000026: Second-level cache disabled
17:43:29.606 [main] INFO org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo -- No LoadTimeWeaver setup: ignoring JPA class transformer
17:43:29.637 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Starting...
17:43:29.682 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Start completed.
17:43:29.784 [main] INFO org.hibernate.orm.connections.pooling -- HHH10001005: Database info:
	Database JDBC URL [Connecting through datasource 'HikariDataSource (HikariPool-1)']
	Database driver: undefined/unknown
	Database version: 18.0
	Autocommit mode: undefined/unknown
	Isolation level: undefined/unknown
	Minimum pool size: undefined/unknown
	Maximum pool size: undefined/unknown
17:43:30.254 [main] INFO org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator -- HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
17:43:30.256 [main] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean -- Initialized JPA EntityManagerFactory for persistence unit 'default'
17:43:30.421 [main] INFO org.springframework.data.jpa.repository.query.QueryEnhancerFactory -- Hibernate is in classpath; If applicable, HQL parser will be used.
CHECK PASS repository interface is implemented by JDK proxy
ADVISORS [org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor@8a11a19], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.dao.support.PersistenceExceptionTranslationInterceptor@47393345], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.transaction.interceptor.TransactionInterceptor@5b16e486], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor@2b85edc7], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor@2bf45b7c], org.springframework.aop.support.DefaultPointcutAdvisor: pointcut [Pointcut.TRUE]; advice [org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor@2559f65c]]
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.id=?
SQL tx=true readOnly=false insert into spring_e03.purchase (label,id) values (?,?)
CHECK PASS inherited saveAndFlush owns and commits transaction
SQL tx=true readOnly=true select p1_0.id,p1_0.label from spring_e03.purchase p1_0
CHECK PASS inherited findAll opens read-only transaction
SQL tx=false readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.label=?
CHECK PASS derived query parses property and executes SQL
CHECK PASS declared derived query has no default transaction
SQL tx=false readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.label=?
CHECK PASS JPQL declared query executes independently of name parser
CHECK PASS declared JPQL query has no default transaction
EXPECTED org.springframework.dao.InvalidDataAccessApiUsageException
CHECK PASS Modifying annotation alone does not begin transaction
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.id=?
SQL tx=true readOnly=false insert into spring_e03.purchase (label,id) values (?,?)
SQL tx=true readOnly=false insert into spring_e03.purchase (label,id) values (?,?)
CHECK PASS fresh observer sees none of repository JDBC JPA uncommitted writes
CHECK PASS JdbcTemplate sees all writes on JPA transaction connection
CHECK PASS outer rollback removes repository JDBC and native JPA writes
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.id=?
SQL tx=true readOnly=false insert into spring_e03.purchase (label,id) values (?,?)
CHECK PASS saveAndFlush inside outer transaction is not commit
CHECK PASS outer completion exposes repository write to observer
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0
CHECK PASS outer read-write transaction overrides repository read-only default
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.id=?
SQL tx=true readOnly=false update spring_e03.purchase p1_0 set label=? where p1_0.id=?
CHECK PASS bulk JPQL update leaves managed entity stale
SQL tx=true readOnly=false select p1_0.id,p1_0.label from spring_e03.purchase p1_0 where p1_0.id=?
CHECK PASS clear plus reload observes bulk update
SQL tx=false readOnly=false insert into spring_e03.purchase (label,id) values (?,?)
CHECK PASS native EntityManager flush remains uncommitted
CHECK PASS native JPA requires explicit transaction completion
CHECK PASS JdbcTemplate outside Spring transaction uses autocommit connection
17:43:30.945 [main] INFO org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean -- Closing JPA EntityManagerFactory for persistence unit 'default'
17:43:30.945 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Shutdown initiated...
17:43:30.946 [main] INFO com.zaxxer.hikari.HikariDataSource -- HikariPool-1 - Shutdown completed.
CHECK PASS context close releases pool and EntityManagerFactory
