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

김스껄님의 프로필 이미지

작성한 질문수

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

실전 예제 1 - 요구사항 분석과 기본 매핑

table 생성 관련

작성

·

776

0

강의대로 똑같이 따라했는데, 테이블이 사진처럼 item, orderitem 두가지 밖에 생기지 않습니다. 혹시 제가 어디 잘못 작성한 것이 있는지 알 수 있을까요?

답변 6

0

안녕하세요. 오선정[경영학부]님, 공식 서포터즈 OMG입니다.

본 강의 10분 20초부터 ~ 10분 50초 까지 설명해주시니 참고해주세요 

영한님이 설명해주시는 이유로 발생하는 문제로 보이네요 :)

첨부하신 에러메시지와 아래 링크의 정리글 제목을 비교하여 확인해보시면 문제가 발생할 때 어떤 키워드로 찾아야 할지 조금은 감이 잡히실꺼에요.

https://www.fwantastic.com/2020/01/caused-by-orgh2jdbcjdbcsqlsyntaxerrorex.html


감사합니다.

 

0

김스껄님의 프로필 이미지
김스껄
질문자

쿼리 메세지 입니다.

    drop table OrderItem if exists
Hibernate: 
    
    drop table OrderItem if exists
11:55:39.873 [main] DEBUG org.hibernate.SQL - 
    
    drop sequence if exists hibernate_sequence
Hibernate: 
    
    drop sequence if exists hibernate_sequence
11:55:39.879 [main] DEBUG org.hibernate.SQL - create sequence hibernate_sequence start with 1 increment by 1
Hibernate: create sequence hibernate_sequence start with 1 increment by 1
11:55:39.879 [main] INFO org.hibernate.orm.connections.access - HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@508a65bf] 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.
11:55:39.881 [main] DEBUG org.hibernate.SQL - 
    
    create table Member (
       id bigint not null,
        city varchar(255),
        name varchar(255),
        street varchar(255),
        zipcode varchar(255),
        primary key (id)
    )
Hibernate: 
    
    create table Member (
       id bigint not null,
        city varchar(255),
        name varchar(255),
        street varchar(255),
        zipcode varchar(255),
        primary key (id)
    )
11:55:39.883 [main] DEBUG org.hibernate.type.EnumType - Using NAMED-based conversion for Enum jpabook.jpashop.domain.OrderStatus
11:55:39.884 [main] DEBUG org.hibernate.SQL - 
    
    create table Order (
       ORDER_ID bigint not null,
        MEMBER_ID bigint,
        orderDate timestamp,
        status varchar(255),
        primary key (ORDER_ID)
    )
Hibernate: 
    
    create table Order (
       ORDER_ID bigint not null,
        MEMBER_ID bigint,
        orderDate timestamp,
        status varchar(255),
        primary key (ORDER_ID)
    )
11:55:39.885 [main] WARN org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl - GenerationTarget encountered exception accepting command : Error executing DDL "
    create table Order (
       ORDER_ID bigint not null,
        MEMBER_ID bigint,
        orderDate timestamp,
        status varchar(255),
        primary key (ORDER_ID)
    )" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
    create table Order (
       ORDER_ID bigint not null,
        MEMBER_ID bigint,
        orderDate timestamp,
        status varchar(255),
        primary key (ORDER_ID)
    )" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:440)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:424)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135)
    at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at jpabook.jpashop.JpaMain.main(JpaMain.java:13)
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "
    CREATE TABLE ORDER[*] (
       ORDER_ID BIGINT NOT NULL,
        MEMBER_ID BIGINT,
        ORDERDATE TIMESTAMP,
        STATUS VARCHAR(255),
        PRIMARY KEY (ORDER_ID)
    ) "; expected "identifier"; SQL statement:

    create table Order (
       ORDER_ID bigint not null,
        MEMBER_ID bigint,
        orderDate timestamp,
        status varchar(255),
        primary key (ORDER_ID)
    ) [42001-199]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:451)
    at org.h2.engine.SessionRemote.done(SessionRemote.java:607)
    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:477)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1292)
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217)
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205)
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54)
    ... 15 common frames omitted
11:55:39.885 [main] DEBUG org.hibernate.SQL - 
    
    create table OrderItem (
       ORDER_ITEM_ID bigint not null,
        count integer not null,
        ITEM_ID bigint,
        ORDER_ID bigint,
        orderPrice integer not null,
        primary key (ORDER_ITEM_ID)
    )
Hibernate: 
    
    create table OrderItem (
       ORDER_ITEM_ID bigint not null,
        count integer not null,
        ITEM_ID bigint,
        ORDER_ID bigint,
        orderPrice integer not null,
        primary key (ORDER_ITEM_ID)
    )

0

김스껄님의 프로필 이미지
김스껄
질문자

orderitem 코드입니다.

package jpabook.jpashop.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class OrderItem {

@Id @GeneratedValue
@Column(name = "ORDER_ITEM_ID")
private Long id;

@Column(name = "ORDER_ID")
private Long orderId;
@Column(name = "ITEM_ID")
private Long itemId;

private int orderPrice;
private int count;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getOrderId() {
return orderId;
}

public void setOrderId(Long orderId) {
this.orderId = orderId;
}

public Long getItemId() {
return itemId;
}

public void setItemId(Long itemId) {
this.itemId = itemId;
}

public int getOrderPrice() {
return orderPrice;
}

public void setOrderPrice(int orderPrice) {
this.orderPrice = orderPrice;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}
}

0

김스껄님의 프로필 이미지
김스껄
질문자

order file 코드 입니다.

package jpabook.jpashop.domain;

import javax.persistence.*;
import java.time.LocalDateTime;

@Entity
public class Order {

@Id @GeneratedValue
@Column(name = "ORDER_ID")
//이렇게 각자 컬럼을 생성해준다.
private Long id;

@Column(name = "MEMBER_ID")
private Long memberId;

private LocalDateTime orderDate;

@Enumerated(EnumType.STRING)
//ordinal 보다는 string이 좋음
private OrderStatus status;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Long getMemberId() {
return memberId;
}

public void setMemberId(Long memberId) {
this.memberId = memberId;
}

public LocalDateTime getOrderDate() {
return orderDate;
}

public void setOrderDate(LocalDateTime orderDate) {
this.orderDate = orderDate;
}

public OrderStatus getStatus() {
return status;
}

public void setStatus(OrderStatus status) {
this.status = status;
}
}

0

김스껄님의 프로필 이미지
김스껄
질문자

member file 코드입니다.

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Member {

@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String city;
private String street;
private String zipcode;

public Long getId() {
return id;
}

public String getName() {
return name;
}

public String getCity() {
return city;
}

public String getStreet() {
return street;
}

public String getZipcode() {
return zipcode;
}

public void setId(Long id) {
this.id = id;
}

public void setName(String name) {
this.name = name;
}

public void setCity(String city) {
this.city = city;
}

public void setStreet(String street) {
this.street = street;
}

public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
}

0

김스껄님의 프로필 이미지
김스껄
질문자

item file 코드 입니다.

package jpabook.jpashop.domain;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

public class Item {

@Id @GeneratedValue
@Column(name = "ITEM_ID")
private Long id;

private String name;
private int price;
private int stockQuantity;

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public int getStockQuantity() {
return stockQuantity;
}

public void setStockQuantity(int stockQuantity) {
this.stockQuantity = stockQuantity;
}


}