인프런 커뮤니티 질문&답변

kdh961113님의 프로필 이미지
kdh961113

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본 키 매핑

H2 SQL 접속 불가 문제입니다.

작성

·

3.1K

0

안녕하세요... 다름이 아니라 DB SQL 문제 때문에 질문드립니다

해당 오류는  H2 DataBase의 접근 오류 문제인거 같습니다. 바로 앞전에 엔티티 매핑에서 부터 뭔가 이상해서 DB를 초기화하고 다시 돌려보니 아예 DB에 데이터 쓰기 자체가 안되는거 같습니다.

참고로 H2 SQL, MY SQL 방언 문제 할 수 있는거 죄다 다해봤는데 도저히 먹히지 않습니다. 다른 방법들은 아예 Spring을 사용해야 되서 아예 xml 파일에서 작동 되지가 않습니다...

답변 6

1

kdh961113님의 프로필 이미지
kdh961113
질문자

이렇게 꼼꼼히 알려주셔서 정말로 감사드립니다... 감동했어요 ㅠㅠ

김영한님의 프로필 이미지
김영한
지식공유자

우와! 드디어 성공했군요!

kdh961113님 끝까지 포기하지 않고 끝까지 화이팅입니다!

1

김영한님의 프로필 이미지
김영한
지식공유자

시퀀스용 테이블이 생성되지 않았나 보아요.

hibernate.hbm2dll.auto의 설정 값을 none -> create로 변경해주세요.

create로 해야 시퀀스가 자동으로 생성됩니다.

저에게 보내주신 내용을 보니 none으로 되어 있더라구요.

와 감사합니다

0

kdh961113님의 프로필 이미지
kdh961113
질문자

리프레쉬는 다 해봐서 그것 문제는 아닌거 같습니다..

일단 로그가 이렇게 나와요... 찾아볼수록 어떠한 문제인지 헷갈려지네요 ㅠㅠ

--------------------------------------------------

5월 23, 2021 1:08:06 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation

INFO: HHH000204: Processing PersistenceUnitInfo [name: hello]

5월 23, 2021 1:08:06 오후 org.hibernate.Version logVersion

INFO: HHH000412: Hibernate ORM core version 5.4.13.Final

5월 23, 2021 1:08:06 오후 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>

INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp://localhost/~/test]

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001001: Connection properties: {user=sa, password=****}

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001003: Autocommit mode: false

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>

INFO: HHH000115: Hibernate connection pool size: 20 (min=1)

5월 23, 2021 1:08:07 오후 org.hibernate.dialect.Dialect <init>

INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect

5월 23, 2021 1:08:07 오후 org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService

INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]

Hibernate: 

    call next value for hibernate_sequence

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions

WARN: SQL Error: 90036, SQLState: 90036

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions

ERROR: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:

call next value for hibernate_sequence [90036-200]

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not prepare statement

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:716)

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:696)

at hellojpa.JpaMain.main(JpaMain.java:19)

Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement

at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)

at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)

at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186)

at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareStatement(StatementPreparerImpl.java:75)

at org.hibernate.id.enhanced.SequenceStructure$1.getNextValue(SequenceStructure.java:93)

at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40)

at org.hibernate.id.enhanced.SequenceStyleGenerator.generate(SequenceStyleGenerator.java:523)

at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:115)

at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128)

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55)

at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102)

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:710)

... 2 more

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:

call next value for hibernate_sequence [90036-200]

at org.h2.message.DbException.getJdbcSQLException(DbException.java:576)

at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)

at org.h2.message.DbException.get(DbException.java:205)

at org.h2.message.DbException.get(DbException.java:181)

at org.h2.command.Parser.readSequence(Parser.java:7678)

at org.h2.command.Parser.readTermWithIdentifier(Parser.java:4593)

at org.h2.command.Parser.readTerm(Parser.java:4311)

at org.h2.command.Parser.readFactor(Parser.java:3343)

at org.h2.command.Parser.readSum(Parser.java:3330)

at org.h2.command.Parser.readConcat(Parser.java:3305)

at org.h2.command.Parser.readCondition(Parser.java:3108)

at org.h2.command.Parser.readExpression(Parser.java:3059)

at org.h2.command.Parser.parseCall(Parser.java:6480)

at org.h2.command.Parser.parsePrepared(Parser.java:905)

at org.h2.command.Parser.parse(Parser.java:843)

at org.h2.command.Parser.parse(Parser.java:815)

at org.h2.command.Parser.prepareCommand(Parser.java:738)

at org.h2.engine.Session.prepareLocal(Session.java:657)

at org.h2.server.TcpServerThread.process(TcpServerThread.java:278)

at org.h2.server.TcpServerThread.run(TcpServerThread.java:183)

at java.base/java.lang.Thread.run(Thread.java:834)

at org.h2.message.DbException.getJdbcSQLException(DbException.java:576)

at org.h2.engine.SessionRemote.done(SessionRemote.java:611)

at org.h2.command.CommandRemote.prepare(CommandRemote.java:85)

at org.h2.command.CommandRemote.<init>(CommandRemote.java:51)

at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:481)

at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1235)

at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:76)

at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:352)

at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$1.doPrepare(StatementPreparerImpl.java:90)

at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:176)

... 12 more

5월 23, 2021 1:08:07 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop

INFO: HHH10001008: Cleaning up connection pool [jdbc:h2:tcp://localhost/~/test]

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 대헌님

추가로 다음과 같이 pom.xml을 변경하고 나면 

<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.13.Final</version>
</dependency>

메이븐 리플레시를 꼭 해주셔야 합니다. 아래 빨간색 버튼을 누르고 기다려주세요.

그러면 새로운 라이브러리를 다운로드 받습니다.

만약 그래도 잘 안되면 프로젝트를 모두 닫고,

File -> Open -> 해당 프로젝트의 pom.xml을 선택해주세요. 그 다음에 선택창이 뜨는데, Open as Project를 선택해주세요.

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

확인해보니 Member에 @Entity가 빠져있습니다.

@Entity //빠져있습니다.
public class Member {

다음을 참고해서 오류 출력 코드를 넣어주시면 오류를 확인할 수 있습니다.

} catch (Exception e) {
e.printStackTrace(); //추가
tx.rollback();
} finally {

추가로 pom.xml에서 하이버네이트 버전은 5.4.1.Final -> 5.4.13.Final로 변경해주세요^^

(테이블이 삭제되지 않는 버그가 해결되었습니다.)

<!-- JPA 하이버네이트 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.13.Final</version>
</dependency>

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. kdh961113님

로그를 보면 데이터베이스에 접근은 되는 것 같은데요.

전체 프로젝트를 압축해서 메일 보내주세요.

메일 보내실 때는 다음 사항을 꼭 지켜주세요.

1. 인프런 질문 링크를 걸어주세요.

2. 실행 방법을 알려주세요.

3. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

 

kdh961113님의 프로필 이미지
kdh961113

작성한 질문수

질문하기