diff --git a/jpa/aot-optimization/pom.xml b/jpa/aot-optimization/pom.xml
index b72d3040..a744252e 100644
--- a/jpa/aot-optimization/pom.xml
+++ b/jpa/aot-optimization/pom.xml
@@ -14,7 +14,7 @@
UTF-8
- 7.0.0.Beta5
+ 7.0.0.CR1
2025.1.0-SNAPSHOT
diff --git a/jpa/aot-optimization/src/main/java/example/springdata/aot/AotJpaApp.java b/jpa/aot-optimization/src/main/java/example/springdata/aot/AotJpaApp.java
index 14dfadba..66235ab8 100644
--- a/jpa/aot-optimization/src/main/java/example/springdata/aot/AotJpaApp.java
+++ b/jpa/aot-optimization/src/main/java/example/springdata/aot/AotJpaApp.java
@@ -24,7 +24,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AotJpaApp {
- public static void main(String[] args) {
- SpringApplication.run(AotJpaApp.class, args);
- }
+ public static void main(String[] args) {
+ SpringApplication.run(AotJpaApp.class, args);
+ }
+
}
diff --git a/jpa/aot-optimization/src/main/java/example/springdata/aot/CLR.java b/jpa/aot-optimization/src/main/java/example/springdata/aot/CLR.java
index aaa2ed51..8272939a 100644
--- a/jpa/aot-optimization/src/main/java/example/springdata/aot/CLR.java
+++ b/jpa/aot-optimization/src/main/java/example/springdata/aot/CLR.java
@@ -31,94 +31,95 @@ import org.springframework.stereotype.Component;
@Component
public class CLR implements CommandLineRunner {
- @Autowired UserRepository repository;
+ @Autowired UserRepository repository;
- @Override
- public void run(String... args) throws Exception {
+ @Override
+ public void run(String... args) throws Exception {
- User luke = new User("id-1", "luke");
- luke.setFirstname("Luke");
- luke.setLastname("Skywalker");
-// Post lukeP1 = new Post("I have a bad feeling about this.");
-// em.persist(lukeP1);
-// luke.setPosts(List.of(lukeP1));
+ User luke = new User("id-1", "luke");
+ luke.setFirstname("Luke");
+ luke.setLastname("Skywalker");
+ // Post lukeP1 = new Post("I have a bad feeling about this.");
+ // em.persist(lukeP1);
+ // luke.setPosts(List.of(lukeP1));
- User leia = new User("id-2", "leia");
- leia.setFirstname("Leia");
- leia.setLastname("Organa");
+ User leia = new User("id-2", "leia");
+ leia.setFirstname("Leia");
+ leia.setLastname("Organa");
- User han = new User("id-3", "han");
- han.setFirstname("Han");
- han.setLastname("Solo");
-// Post hanP1 = new Post("It's the ship that made the Kessel Run in less than 12 Parsecs.");
-// em.persist(hanP1);
-// han.setPosts(List.of(hanP1));
+ User han = new User("id-3", "han");
+ han.setFirstname("Han");
+ han.setLastname("Solo");
+ // Post hanP1 = new Post("It's the ship that made the Kessel Run in less than 12 Parsecs.");
+ // em.persist(hanP1);
+ // han.setPosts(List.of(hanP1));
- User chewbacca = new User("id-4", "chewbacca");
- User yoda = new User("id-5", "yoda");
- Post yodaP1 = new Post("Do. Or do not. There is no try.");
- Post yodaP2 = new Post("Decide you must, how to serve them best. If you leave now, help them you could; but you would destroy all for which they have fought, and suffered.");
-// em.persist(yodaP1);
-// em.persist(yodaP2);
-// yoda.setPosts(List.of(yodaP1, yodaP2));
+ User chewbacca = new User("id-4", "chewbacca");
+ User yoda = new User("id-5", "yoda");
+ Post yodaP1 = new Post("Do. Or do not. There is no try.");
+ Post yodaP2 = new Post(
+ "Decide you must, how to serve them best. If you leave now, help them you could; but you would destroy all for which they have fought, and suffered.");
+ // em.persist(yodaP1);
+ // em.persist(yodaP2);
+ // yoda.setPosts(List.of(yodaP1, yodaP2));
- User vader = new User("id-6", "vader");
- vader.setFirstname("Anakin");
- vader.setLastname("Skywalker");
-// Post vaderP1 = new Post("I am your father");
-// em.persist(vaderP1);
-// vader.setPosts(List.of(vaderP1));
+ User vader = new User("id-6", "vader");
+ vader.setFirstname("Anakin");
+ vader.setLastname("Skywalker");
+ // Post vaderP1 = new Post("I am your father");
+ // em.persist(vaderP1);
+ // vader.setPosts(List.of(vaderP1));
- User kylo = new User("id-7", "kylo");
- kylo.setFirstname("Ben");
- kylo.setLastname("Solo");
+ User kylo = new User("id-7", "kylo");
+ kylo.setFirstname("Ben");
+ kylo.setLastname("Solo");
- repository.saveAll(List.of(luke, leia, han, chewbacca, yoda, vader, kylo));
+ repository.saveAll(List.of(luke, leia, han, chewbacca, yoda, vader, kylo));
- System.out.println("------- annotated multi -------");
- System.out.println(repository.usersWithUsernamesStartingWith("l"));
+ System.out.println("------- annotated multi -------");
+ System.out.println(repository.usersWithUsernamesStartingWith("l"));
- System.out.println("------- derived single -------");
- System.out.println(repository.findUserByUsername("yoda"));
+ System.out.println("------- derived single -------");
+ System.out.println(repository.findUserByUsername("yoda"));
-// System.out.println("------- derived nested.path -------");
-// System.out.println(repository.findUserByPostsMessageLike("father"));
+ // System.out.println("------- derived nested.path -------");
+ // System.out.println(repository.findUserByPostsMessageLike("father"));
- System.out.println("------- derived optional -------");
- System.out.println(repository.findOptionalUserByUsername("yoda"));
+ System.out.println("------- derived optional -------");
+ System.out.println(repository.findOptionalUserByUsername("yoda"));
- System.out.println("------- derived count -------");
- Long count = repository.countUsersByLastnameLike("Sky");
- System.out.println("user count " + count);
+ System.out.println("------- derived count -------");
+ Long count = repository.countUsersByLastnameLike("Sky");
+ System.out.println("user count " + count);
- System.out.println("------- derived exists -------");
- Boolean exists = repository.existsByUsername("vader");
- System.out.println("user exists " + exists);
+ System.out.println("------- derived exists -------");
+ Boolean exists = repository.existsByUsername("vader");
+ System.out.println("user exists " + exists);
- System.out.println("------- derived multi -------");
- System.out.println(repository.findUserByLastnameStartingWith("Sky"));
+ System.out.println("------- derived multi -------");
+ System.out.println(repository.findUserByLastnameStartingWith("Sky"));
- System.out.println("------- derived sorted -------");
- System.out.println(repository.findUserByLastnameStartingWithOrderByFirstname("Sky"));
+ System.out.println("------- derived sorted -------");
+ System.out.println(repository.findUserByLastnameStartingWithOrderByFirstname("Sky"));
- System.out.println("------- derived page -------");
- Page page0 = repository.findUserByLastnameStartingWith("S", PageRequest.of(0, 2));
- System.out.println("page0: " + page0);
- System.out.println("page0.content: " + page0.getContent());
+ System.out.println("------- derived page -------");
+ Page page0 = repository.findUserByLastnameStartingWith("S", PageRequest.of(0, 2));
+ System.out.println("page0: " + page0);
+ System.out.println("page0.content: " + page0.getContent());
- Page page1 = repository.findUserByLastnameStartingWith("S", PageRequest.of(1, 2));
- System.out.println("page1: " + page1);
- System.out.println("page1.content: " + page1.getContent());
+ Page page1 = repository.findUserByLastnameStartingWith("S", PageRequest.of(1, 2));
+ System.out.println("page1: " + page1);
+ System.out.println("page1.content: " + page1.getContent());
- System.out.println("------- derived slice -------");
- Slice slice0 = repository.findUserByUsernameAfter("luke", PageRequest.of(0, 2));
- System.out.println("slice0: " + slice0);
- System.out.println("slice0.content: " + slice0.getContent());
+ System.out.println("------- derived slice -------");
+ Slice slice0 = repository.findUserByUsernameAfter("luke", PageRequest.of(0, 2));
+ System.out.println("slice0: " + slice0);
+ System.out.println("slice0.content: " + slice0.getContent());
- System.out.println("------- derived top -------");
- System.out.println(repository.findTop2UsersByLastnameStartingWith("S"));
+ System.out.println("------- derived top -------");
+ System.out.println(repository.findTop2UsersByLastnameStartingWith("S"));
-// System.out.println("------- derived with fields -------");
-// System.out.println(repository.findJustUsernameBy());
- }
+ // System.out.println("------- derived with fields -------");
+ // System.out.println(repository.findJustUsernameBy());
+ }
}
diff --git a/jpa/aot-optimization/src/main/java/example/springdata/aot/Post.java b/jpa/aot-optimization/src/main/java/example/springdata/aot/Post.java
index 5909cd1a..6c6e3e82 100644
--- a/jpa/aot-optimization/src/main/java/example/springdata/aot/Post.java
+++ b/jpa/aot-optimization/src/main/java/example/springdata/aot/Post.java
@@ -30,39 +30,37 @@ import java.util.Random;
@Entity
public class Post {
- @Id
- @GeneratedValue
- private Long id;
+ @Id
+ @GeneratedValue private Long id;
- private String message;
- private Instant date;
+ private String message;
+ private Instant date;
- public Post() {
- }
+ public Post() {}
- public Post(String message) {
- this.message = message;
- this.date = Instant.now().minus(new Random().nextLong(100), ChronoUnit.MINUTES);
- }
+ public Post(String message) {
+ this.message = message;
+ this.date = Instant.now().minus(new Random().nextLong(100), ChronoUnit.MINUTES);
+ }
- public String getMessage() {
- return message;
- }
+ public String getMessage() {
+ return message;
+ }
- public void setMessage(String message) {
- this.message = message;
- }
+ public void setMessage(String message) {
+ this.message = message;
+ }
- public Instant getDate() {
- return date;
- }
+ public Instant getDate() {
+ return date;
+ }
- public void setDate(Instant date) {
- this.date = date;
- }
+ public void setDate(Instant date) {
+ this.date = date;
+ }
- @Override
- public String toString() {
- return message;
- }
+ @Override
+ public String toString() {
+ return message;
+ }
}
diff --git a/jpa/aot-optimization/src/main/java/example/springdata/aot/User.java b/jpa/aot-optimization/src/main/java/example/springdata/aot/User.java
index 4f9f3357..b9c43ff0 100644
--- a/jpa/aot-optimization/src/main/java/example/springdata/aot/User.java
+++ b/jpa/aot-optimization/src/main/java/example/springdata/aot/User.java
@@ -28,85 +28,78 @@ import java.time.Instant;
@Entity(name = "users")
public class User {
- @Id
- private String id;
- private String username;
+ @Id private String id;
+ private String username;
- @Column(name = "first_name") String firstname;
- @Column(name = "last_name") String lastname;
+ @Column(name = "first_name") String firstname;
+ @Column(name = "last_name") String lastname;
-// @OneToMany
-// private List posts;
+ // @OneToMany
+ // private List posts;
- Instant registrationDate;
- Instant lastSeen;
+ Instant registrationDate;
+ Instant lastSeen;
- public User() {
- }
+ public User() {}
- public User(String id, String username) {
- this.id = id;
- this.username = username;
- }
+ public User(String id, String username) {
+ this.id = id;
+ this.username = username;
+ }
- public String getId() {
- return id;
- }
+ public String getId() {
+ return id;
+ }
- public String getUsername() {
- return username;
- }
+ public String getUsername() {
+ return username;
+ }
- public String getFirstname() {
- return firstname;
- }
+ public String getFirstname() {
+ return firstname;
+ }
- public void setFirstname(String firstname) {
- this.firstname = firstname;
- }
+ public void setFirstname(String firstname) {
+ this.firstname = firstname;
+ }
- public String getLastname() {
- return lastname;
- }
+ public String getLastname() {
+ return lastname;
+ }
- public void setLastname(String lastname) {
- this.lastname = lastname;
- }
+ public void setLastname(String lastname) {
+ this.lastname = lastname;
+ }
- public Instant getRegistrationDate() {
- return registrationDate;
- }
+ public Instant getRegistrationDate() {
+ return registrationDate;
+ }
- public void setRegistrationDate(Instant registrationDate) {
- this.registrationDate = registrationDate;
- }
+ public void setRegistrationDate(Instant registrationDate) {
+ this.registrationDate = registrationDate;
+ }
- public Instant getLastSeen() {
- return lastSeen;
- }
+ public Instant getLastSeen() {
+ return lastSeen;
+ }
- public void setLastSeen(Instant lastSeen) {
- this.lastSeen = lastSeen;
- }
+ public void setLastSeen(Instant lastSeen) {
+ this.lastSeen = lastSeen;
+ }
-// public List getPosts() {
-// return posts;
-// }
-//
-// public void setPosts(List posts) {
-// this.posts = posts;
-// }
+ // public List getPosts() {
+ // return posts;
+ // }
+ //
+ // public void setPosts(List posts) {
+ // this.posts = posts;
+ // }
- @Override
- public String toString() {
- return "User{" +
- "id='" + id + '\'' +
- ", username='" + username + '\'' +
- ", firstname='" + firstname + '\'' +
- ", lastname='" + lastname + '\'' +
- ", registrationDate=" + registrationDate +
- ", lastSeen=" + lastSeen +
-// ", posts=" + posts +
- '}';
- }
+ @Override
+ public String toString() {
+ return "User{" + "id='" + id + '\'' + ", username='" + username + '\'' + ", firstname='" + firstname + '\''
+ + ", lastname='" + lastname + '\'' + ", registrationDate=" + registrationDate + ", lastSeen=" + lastSeen +
+ // ", posts=" + posts +
+ '}';
+ }
}
diff --git a/jpa/aot-optimization/src/main/java/example/springdata/aot/UserRepository.java b/jpa/aot-optimization/src/main/java/example/springdata/aot/UserRepository.java
index 4d28f9a5..1da15b36 100644
--- a/jpa/aot-optimization/src/main/java/example/springdata/aot/UserRepository.java
+++ b/jpa/aot-optimization/src/main/java/example/springdata/aot/UserRepository.java
@@ -31,27 +31,27 @@ import org.springframework.data.repository.CrudRepository;
*/
public interface UserRepository extends CrudRepository, QuerydslPredicateExecutor {
- User findUserByUsername(String username);
+ User findUserByUsername(String username);
- Optional findOptionalUserByUsername(String username);
+ Optional findOptionalUserByUsername(String username);
- Long countUsersByLastnameLike(String lastname);
+ Long countUsersByLastnameLike(String lastname);
- Boolean existsByUsername(String username);
+ Boolean existsByUsername(String username);
- List findUserByLastnameLike(String lastname);
+ List findUserByLastnameLike(String lastname);
- List findUserByLastnameStartingWithOrderByFirstname(String lastname);
+ List findUserByLastnameStartingWithOrderByFirstname(String lastname);
- List findTop2UsersByLastnameStartingWith(String lastname);
+ List findTop2UsersByLastnameStartingWith(String lastname);
- Slice findUserByUsernameAfter(String username, Pageable pageable);
+ Slice findUserByUsernameAfter(String username, Pageable pageable);
- List findUserByLastnameStartingWith(String lastname);
+ List findUserByLastnameStartingWith(String lastname);
- Page findUserByLastnameStartingWith(String lastname, Pageable page);
+ Page findUserByLastnameStartingWith(String lastname, Pageable page);
- @Query("SELECT u FROM example.springdata.aot.User u WHERE u.username LIKE ?1%")
- List usersWithUsernamesStartingWith(String username);
+ @Query("SELECT u FROM example.springdata.aot.User u WHERE u.username LIKE ?1%")
+ List usersWithUsernamesStartingWith(String username);
}
diff --git a/jpa/aot-optimization/src/main/resources/application.properties b/jpa/aot-optimization/src/main/resources/application.properties
index a036d6f1..ee677965 100644
--- a/jpa/aot-optimization/src/main/resources/application.properties
+++ b/jpa/aot-optimization/src/main/resources/application.properties
@@ -1,5 +1,5 @@
spring.jpa.defer-datasource-initialization=true
-spring.jpa.properties.hibernate.boot.allow_jdbc_metadata_access=false
spring.aot.repositories.enabled=true
+#spring.aot.jpa.repositories.use-entitymanager=true
#logging.level.org.springframework.data.repository.aot.generate.RepositoryContributor=trace