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

richthofen4852님의 프로필 이미지
richthofen4852

작성한 질문수

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

섹션5 단방향 연관관계 코드쪽에서 DB에 값이 저장되지 않는 오류가 발생합니다.

작성

·

1.4K

0

섹션 5의 내용을 진행하면서 JpaMain을 실행시킨 결과

1월 13, 2021 12:01:37 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation

INFO: HHH000204: Processing PersistenceUnitInfo [

name: hello

...]

1월 13, 2021 12:01:37 오후 org.hibernate.Version logVersion

INFO: HHH000412: Hibernate Core {5.3.10.Final}

1월 13, 2021 12:01:37 오후 org.hibernate.cfg.Environment <clinit>

INFO: HHH000206: hibernate.properties not found

1월 13, 2021 12:01:37 오후 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>

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

1월 13, 2021 12:01:37 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

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

1월 13, 2021 12:01:37 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

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

1월 13, 2021 12:01:37 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001001: Connection properties: {user=sa}

1월 13, 2021 12:01:37 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001003: Autocommit mode: false

1월 13, 2021 12:01:37 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>

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

1월 13, 2021 12:01:37 오후 org.hibernate.dialect.Dialect <init>

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

Hibernate: 

    

    drop table Member if exists

Hibernate: 

    

    drop table Team if exists

Hibernate: 

    

    drop sequence if exists hibernate_sequence

Hibernate: create sequence hibernate_sequence start with 1 increment by 1

Hibernate: 

    

    create table Member (

       MEMBER_ID bigint not null,

        TEAM_ID varchar(255),

        USERNAME varchar(255),

        primary key (MEMBER_ID)

    )

Hibernate: 

    

    create table Team (

       TEAM_ID varchar(255) not null,

        name varchar(255),

        primary key (TEAM_ID)

    )

1월 13, 2021 12:01:38 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@700f518a] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

1월 13, 2021 12:01:38 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@58860997] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

1월 13, 2021 12:01:38 오후 org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources

INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@27b45ea'

Hibernate: 

    call next value for hibernate_sequence

1월 13, 2021 12:01:38 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop

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

Process finished with exit code 0 와 같은 로그가 뜨면서 DB에 Member와 Item table은 생성되지만 값이 넣어지지 않습니다.

이런 경우는 어떻게 해결해야 하는지 여쭙고 싶습니다.

답변 5

1

강사님의 말씀대로 id의 데이터타입으로 야기한 오류였습니다.

String에서 Long 으로 타입을 바꾸어 보니 문제가 해결되었습니다.

정말 감사드립니다~~!!!!

1

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

오류 메시지를 보니

javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String

이렇게 나오네요.

Team과 Member의 id 타입을 String -> Long으로 변경해주시겠어요?

0

위의 사진과 더불어 1월 13, 2021 7:31:18 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation

INFO: HHH000204: Processing PersistenceUnitInfo [name: hello]

1월 13, 2021 7:31:18 오후 org.hibernate.Version logVersion

INFO: HHH000412: Hibernate ORM core version 5.4.20.Final

1월 13, 2021 7:31:18 오후 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>

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

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure

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

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

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

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

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

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator

INFO: HHH10001003: Autocommit mode: false

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>

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

1월 13, 2021 7:31:19 오후 org.hibernate.dialect.Dialect <init>

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

Hibernate: 

    

    drop table if exists Member CASCADE 

Hibernate: 

    

    drop table if exists Team CASCADE 

Hibernate: 

    

    drop sequence if exists hibernate_sequence

Hibernate: create sequence hibernate_sequence start with 1 increment by 1

Hibernate: 

    

    create table Member (

       MEMBER_ID bigint not null,

        TEAM_ID varchar(255),

        USERNAME varchar(255),

        primary key (MEMBER_ID)

    )

Hibernate: 

    

    create table Team (

       teamId varchar(255) not null,

        name varchar(255),

        primary key (teamId)

    )

1월 13, 2021 7:31:19 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@7c1e32c9] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

1월 13, 2021 7:31:19 오후 org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection

INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5a2bd7c8] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode.

1월 13, 2021 7:31:19 오후 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

javax.persistence.PersistenceException: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String

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:727)

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

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

Caused by: org.hibernate.id.IdentifierGenerationException: Unknown integral data type for ids : java.lang.String

at org.hibernate.id.IdentifierGeneratorHelper.getIntegralDataTypeHolder(IdentifierGeneratorHelper.java:224)

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

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:721)

... 2 more

1월 13, 2021 7:31:19 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop

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

Process finished with exit code 0

이러한 로그가 출력되는 것을 볼 수 있었습니다.

0

0

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

안녕하세요. richthofen4852님

JpaMain 로직도 모두 남겨주시겠어요?

추가로 다음과 같이 catch 다음에 ex.printStackTrace()도 남겨서 실행해봐주세요.

try {

        } catch (Exception ex) {

            ex.printStackTrace();

        } finally {

            em.close();

            emf.close();

        }

richthofen4852님의 프로필 이미지
richthofen4852

작성한 질문수

질문하기