반응형
애플리케이션을 다시 시작한 후 스프링 부트 jpa findbyid()가 작동을 중지함
다음과 같은 문제가 있습니다.
데이터베이스에 테이블이 없도록 "처음" 응용프로그램을 실행하면 봄에 테이블이 생성되고 모든 것이 정상적으로 작동합니다.저장() 및 ID()로 찾을 수 있습니다.
애플리케이션을 다시 시작하면 첫 번째 find byId() 문이 닫히고 이유를 알 수 없습니다.
사용 중
- 스프링 부츠 3.0.1(하드웨어 버전)
- mariadb 10.9
- 자바 17
내 코드는 다음과 같습니다.
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
.
.
.
</dependencies>
application.properties
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mariadb://${MYSQL_HOST:localhost}:3306/database
spring.datasource.username=USERNAME
spring.datasource.password=PASSWORD
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.open-in-view=false
독립체
@Entity
@Table(name = "guild_entity")
@Getter
@Setter
public class GuildEntity {
@Id
@Column(name = "guild_id")
private String guildId;
@Column(name = "bot_control_role")
private String botControlRole;
@Column(name = "command_prefix")
@Builder.Default
private String commandPrefix = "varchar(1) default '&'";
@Column(name = "language")
@Builder.Default
private String language = "varchar(2) default 'EN'";
@Column(name = "voice_control_role")
private String voiceControlRole;
@Column(name = "volume")
@Builder.Default
private Integer volume = 20;
@Column(name = "player_shuffle")
@Builder.Default
private Boolean shuffle = false;
@Column(name = "player_repeat")
@Builder.Default
private Boolean repeat = false;
@Column(name = "write_channel")
private String writeChannel;
@Column(name = "enable_support_system")
@Builder.Default
private Boolean enableSupportSystem = false;
@Column(name = "enable_welcome_messages")
@Builder.Default
private Boolean enableWelcomeMessages = false;
@Column(name = "welcome_channel")
private String welcomeChannel;
@Column(name = "welcome_message")
@Builder.Default
private String welcomeMessage = "varchar(255) default ':wave: Welcome to %server%, %user%!'";
}
엔티티 저장소
@Repository
public interface GuildEntityRepository extends JpaRepository<GuildEntity, String> {
}
SQL 핸들러
@Service
@RequiredArgsConstructor
public class SQLHandler {
@Autowired
private final GuildEntityRepository guildEntityRepository;
public GuildEntity getGuild(String guildId) {
NeptuneBot.getLogger().debug(guildId, "Get guild", LogType.SQL);
return guildEntityRepository.findById(guildId).orElse(null);
}
public void saveAllGuilds(Iterable<GuildEntity> guildEntities) {
NeptuneBot.getLogger().debugSQL("Save all guild entities...");
guildEntityRepository.saveAll(guildEntities);
NeptuneBot.getLogger().debugSQL("Done!");
}
}
재시작 후 로그
[2m2022-12-31T03:07:38.523+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[0.1-8080-exec-1][0;39m [36mo.a.c.c.C.[Tomcat].[localhost].[/] [0;39m [2m:[0;39m Initializing Spring DispatcherServlet 'dispatcherServlet'
[2m2022-12-31T03:07:38.523+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[0.1-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Initializing Servlet 'dispatcherServlet'
[2m2022-12-31T03:07:38.525+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[0.1-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Completed initialization in 1 ms
[2m2022-12-31T03:07:38.907+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[ main][0;39m [36mnet.dv8tion.jda.api.JDA [0;39m [2m:[0;39m Login Successful!
[2m2022-12-31T03:07:39.198+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[inWS-ReadThread][0;39m [36mn.d.j.internal.requests.WebSocketClient [0;39m [2m:[0;39m Connected to WebSocket
[2m2022-12-31T03:07:39.608+01:00[0;39m [32m INFO[0;39m [35m1751594[0;39m [2m---[0;39m [2m[inWS-ReadThread][0;39m [36mnet.dv8tion.jda.api.JDA [0;39m [2m:[0;39m Finished Loading!
[2022.12.31 03:07:42]: SQL | Get guild
Hibernate:
select
g1_0.guild_id,
g1_0.bot_control_role,
g1_0.command_prefix,
g1_0.enable_support_system,
g1_0.enable_welcome_messages,
g1_0.language,
g1_0.player_repeat,
g1_0.player_shuffle,
g1_0.voice_control_role,
g1_0.volume,
g1_0.welcome_channel,
g1_0.welcome_message,
g1_0.write_channel
from
guild_entity g1_0
where
g1_0.guild_id=?
당신의 도움에 감사드리며 새해 복 많이 받으세요!
완전히 제 잘못입니다. NullPointer가 있었습니다.메서드에 대한 예외이지만 어떤 이유로 인해 던져지지 않았습니다.제 스프링 구성은 문제가 없는 것 같습니다.
도와주셔서 감사합니다!
언급URL : https://stackoverflow.com/questions/74969582/spring-boot-jpa-findbyid-stops-working-after-restart-of-application
반응형
'programing' 카테고리의 다른 글
| 정의자('''@''')로 지정된 사용자가 존재하지 않습니다. (0) | 2023.08.20 |
|---|---|
| 문자열을 argv/argc로 구문 분석 (0) | 2023.08.20 |
| window.open()은(는) AJAX 성공 시 다르게 작동합니다. (0) | 2023.08.20 |
| jQuery post()(일련화 및 추가 데이터 포함) (0) | 2023.08.20 |
| Office Interop을 사용하여 Excel에 셀을 쓰는 가장 빠른 방법은 무엇입니까? (0) | 2023.08.20 |