[JPA] MappingException: Repeated column in mapping for entity 에러해결

Yu Seong Kim·2024년 6월 30일
0
post-thumbnail

간단한 매핑 예제 코드를 짜면서 공부를 하는 도중 MappingException: Repeated column in mapping for entity라는 에러가 나왔습니다.

생성하나 Entity를 확인하면 다음과 같습니다.



@Entity
@Table(name="MEMBER")
public class Member {
    @Id@GeneratedValue
    @Column(name="MEMBER_ID")
    private Long id;
    private String name;
    private String city;
    private String street;
    private String zipcode;

    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 String getCity() {
        return city;
    }

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

    public String getStreet() {
        return street;
    }

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

    public String getZipcode() {
        return zipcode;
    }

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


@Entity
@Table(name= "ORDERS")
public class Order {
    @Id @GeneratedValue
    @Column(name="ORDERS_ID")
    private Long id;

    private Long MemberId;

    private LocalDateTime orderDate;

    @Enumerated(EnumType.STRING)
    private OrderStatus status;

}

@Entity
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;
    }
}
@Entity
public class Order_Item {
    @Id
    @GeneratedValue
    @Column(name="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) {
        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;
    }
}



public enum OrderStatus {
    ORDER,CANCEL
}

여기서 어떠한 문제가 있을까 고민을 해보았습니다.
MappingException이기 때문에 Order_Item 엔티티에서 문제가 있을 것이라고 생각했습니다.
MappingException: Repeated column in mapping for entity 라는 문장을 해석하면 엔터티 매핑에서 반복되는 열이 있다는 내용이 었습니다.
그럼 어느 부분에 중복된 컬럼 문제가 발생하고 있다고 판단하였습니다.
그런데!!!

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

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

Order_Item 클래스에서 기본 키 id 를 "ORDER_ITEMID"가 아닌 "ITEM_ID"로 지정했고, 밑에 ItemId의 칼럼이름도 "ITEM_ID"로 지정한 것을 확인했습니다.

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

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

로 다시 수정해주니

정상적으로 실행됩니다.
그냥 저의 실수 였고, 이러한 작은 부분으로도 큰 영향을 미칠 수 있다는 것을 깨닫고 다음 부터는 정신을 부여잡고 코딩을 해야겠다는 생각을 하게 되었습니다.

profile
인생을 코딩하는 남자.

0개의 댓글