2016-08-04 2 views
0

QuoteApprovalLevelsUserCustomer을 일대일로 매핑 할 수 없습니다. 나는 다음과 같은 오류가 점점 오전 :최대 절전 모드 매핑 문제 - 일대일

Caused by: javax.persistence.PersistenceException: [PersistenceUnit: oqtPersistenceUnit] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) [hibernate-entitymanager-3.6.10.Final.jar:3.6.10.Final] 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) [hibernate-entitymanager-3.6.10.Final.jar:3.6.10.Final] 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:288) [spring-orm-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) [spring-orm-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541) [spring-beans-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479) [spring-beans-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
    ... 33 more 
Caused by: org.hibernate.HibernateException: Missing column: orderApprovalLevel in poqt01.oqt_user_ic01 

소스 코드

/** 
* Created with IntelliJ IDEA. 
* User: vartiwari 
* Date: 2/1/16 
* Time: 5:22 PM 
* To change this template use File | Settings | File Templates. 
*/ 
@SuppressWarnings("PMD.UnusedPrivateField") 
@Entity 
@Table(name = "oqt_user_ic01") 
@AssociationOverrides({ 
     @AssociationOverride(name = "pk.user", joinColumns = @JoinColumn(name = "ftId")), 
     @AssociationOverride(name = "pk.customer", joinColumns = @JoinColumn(name = "ic01s")) 
}) 
public class UserCustomer implements Serializable{ 

    //'pk' refers to the composite key for oqt_user_ic01 with columns ftID for User and ic01 for Customer 
    private UserCustomerId pk; 
    private boolean ic01FromMSS; 

    @OneToOne(cascade = CascadeType.ALL) 
    @Column(name = "orderApprovalLevelId") 
    private OrderApprovalLevels orderApprovalLevel; 

    @OneToOne(cascade = CascadeType.ALL) 
    @Column(name = "quoteApprovalLevelId") 
    private QuoteApprovalLevels quoteApprovalLevel; 

    @EmbeddedId 
    public UserCustomerId getPk() { 
     if(pk == null){ 
      pk = new UserCustomerId(); 
     } 
     return pk; 
    } 

    public void setPk(UserCustomerId pk) { 
     this.pk = pk; 
    } 

    @Transient 
    public User getUser() { 
     return getPk().getUser(); 
    } 

    public void setUser(User user){ 
     getPk().setUser(user); 
    } 

    @Transient 
    public Customer getCustomer() { 
     return getPk().getCustomer(); 
    } 

    public void setCustomer(Customer customer){ 
     getPk().setCustomer(customer); 
    } 

    @Column(name = "ic01FromMSS",nullable = false) 
    public boolean isIc01FromMSS() { 
     return ic01FromMSS; 
    } 

    public void setIc01FromMSS(boolean ic01FromMSS) { 
     this.ic01FromMSS = ic01FromMSS; 
    } 


    public OrderApprovalLevels getOrderApprovalLevel() { 
     return orderApprovalLevel; 
    } 

    public void setOrderApprovalLevel(OrderApprovalLevels orderApprovalLevel) { 
     this.orderApprovalLevel = orderApprovalLevel; 
    } 

    public QuoteApprovalLevels getQuoteApprovalLevel() { 
     return quoteApprovalLevel; 
    } 

    public void setQuoteApprovalLevel(QuoteApprovalLevels quoteApprovalLevel) { 
     this.quoteApprovalLevel = quoteApprovalLevel; 
    } 
} 

@Entity 
@Table(name="oqt_customer_quote_approval_levels") 
@Getter 
@Setter 
@NoArgsConstructor 
@SuppressWarnings({"PMD.UnusedPrivateField", "PMD.SingularField"}) 
public class QuoteApprovalLevels implements Serializable { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column 
    private Long id; 
    private Long approvalLevel; 
    private String approvalLabel; 
} 
+0

그래 .. 우리가 열 orderApprovalLevelId을 @JoinColumn을 사용할 필요가 있다고 생각하는 테이블 oqt_customer_approval 레벨에 대한 외부 키로 맵핑됩니다. – simba

+0

위의 코드를 추가했습니다. – simba

+0

stacktrace에서 보면 오류의 원인인지는 모르지만 필드 (필드 액세스)와 동작이 정의되지 않은 getters (속성 액세스)에 매핑 주석을 사용하고 있는지는 잘 모르겠습니다. 따라서 먼저 수정해야하며 아직 작동하지 않는 경우 가능한 원인을 하나씩 제외해야합니다. 혼합 된 액세스 모드를 정의하려면 [내 질문에 대한 답변] (http://stackoverflow.com/questions/38728671/column-annotation-does-not-work/38730149#38730149)을보십시오. – ujulu

답변

0

난 당신이 oqt_user_ic01에 One-to-One 관계에 대한

@OneToOne(cascade = CascadeType.ALL) 
    @JoinColumn(name = "orderApprovalLevelId") 
    private OrderApprovalLevels orderApprovalLevel; 
+0

이미 시도했지만 작동하지 않습니다. – simba