Уже поздно в офисе, и вы застряли с этим странным кодом Jpa с JoinColumns и каскадами, и вы не можете найти, что идет не так. Вы хотите, чтобы был способ просмотреть напечатанные запросы, а также значения.
С небольшой настройкой приложения Spring Boot это возможно.
С помощью Ломбока вот наша модель jpa.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
package com.gkatzioura.hibernatelog.dao;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import lombok.Data;@Data@Entity@Table(name = "application_user")public class ApplicationUser { @Id private Long id; private String username; private String password;} |
Это хранилище
|
1
2
3
4
5
6
|
package com.gkatzioura.hibernatelog.dao;import org.springframework.data.repository.CrudRepository;public interface ApplicationUserRepository extends CrudRepository {} |
Не найденное исключение
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package com.gkatzioura.hibernatelog.controller;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.ResponseStatus;@ResponseStatus(value = HttpStatus.NOT_FOUND)class ApplicationUserNotFoundException extends RuntimeException { public ApplicationUserNotFoundException() { } public ApplicationUserNotFoundException(String message) { super(message); } public ApplicationUserNotFoundException(String message, Throwable cause) { super(message, cause); } public ApplicationUserNotFoundException(Throwable cause) { super(cause); } public ApplicationUserNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); }} |
И контроллер
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package com.gkatzioura.hibernatelog.controller;import java.util.Optional;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import com.gkatzioura.hibernatelog.dao.ApplicationUser;import com.gkatzioura.hibernatelog.dao.ApplicationUserRepository;@RestControllerpublic class ApplicationUserController { private final ApplicationUserRepository applicationUserRepository; public ApplicationUserController(ApplicationUserRepository applicationUserRepository) { this.applicationUserRepository = applicationUserRepository; } @GetMapping("/user/{id}") @ResponseBody public ApplicationUser getApplicationUser(@PathVariable Long id) { Optional applicationUser = applicationUserRepository.findById(id); if(applicationUser.isPresent()) { return applicationUser.get(); } else { throw new ApplicationUserNotFoundException(); } }} |
Добавляя следующее в application.yaml, мы обеспечиваем создание таблицы с помощью hibernate, ведение журнала запросов, форматирование зарегистрированных запросов sql, а также отображаемые значения фактических параметров.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
spring: jpa: hibernate: ddl-auto: create properties: hibernate: show_sql: true use_sql_comments: true format_sql: truelogging: level: org: hibernate: type: trace |
Только
|
1
|
curl http://localhost:8080/user/1 |
И вы получили свои журналы.
|
Опубликовано на Java Code Geeks с разрешения Эммануила Гкациоураса, партнера нашей программы JCG. См. Оригинальную статью здесь: Spring Boot & Hibernate: печать запросов и переменных Мнения, высказанные участниками Java Code Geeks, являются их собственными. |