간단한 매핑 예제 코드를 짜면서 공부를 하는 도중 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;
로 다시 수정해주니
정상적으로 실행됩니다.
그냥 저의 실수 였고, 이러한 작은 부분으로도 큰 영향을 미칠 수 있다는 것을 깨닫고 다음 부터는 정신을 부여잡고 코딩을 해야겠다는 생각을 하게 되었습니다.