2017-05-17 14 views
-1

OneToMany側に@JoinColumnを作成できないのはなぜですか?それはスロー:OneToMany側のJoinColumnが機能しない

2017-05-17 09:13:34.063 WARN 7724 --- [   main] o.s.b.f.s.DefaultListableBeanFactory  : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMapper' defined in file [C:\MyProjects\myjnia\Myjnia_Inzynier\target\classes\com\carwash\mappers\RoleMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in com.carwash.MyjniaInzynierApplication: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available 

    . //always the same but with every mapper interface 
    . 
    . 

を私が方向を変更した場合 - Wash側のJoinColumnを入れて、それは動作しますが、私はAdminテーブルからWashへの参照を持っていると思います。

Adminクラス:

public class Admin { 
     private Integer adminId; 
     private User userId; 
     private List<Wash> washId; 

     @OneToMany(mappedBy = "washAdmin", fetch = FetchType.LAZY) 
     @JoinColumn(name = "washId") 
     public List<Wash> getWashId() { 
      return washId; 
     } 

Washクラス:あなたはあなたの関係の双方向を行う必要があり、この場合には

public class Wash { 
    private Integer washId; 
    private String name; 
    private WashLocation washLocation; 
    private List<Worker> washWorker; 
    private List<Reservation> washReservation; 
    private List<WashWashType> washTypes; 
    private Admin washAdmin; 

    @ManyToOne() 
    @JsonIgnore 
    public Admin getWashAdmin() { 
     return washAdmin; 
    } 

    public void setWashAdmin(Admin washAdmin) { 
     this.washAdmin = washAdmin; 
    } 
+0

完全なスタックトレースを追加してください – Jens

+0

@Jens updated .. – bielas

+0

'@ JoinColumn'は、要素内の列の名前、つまり' Wash'を指定します。そういうことです。 '@ JoinColumn'を' Wash'や 'Admin'に置くかどうかは関係ありません.FKは常に要素に入っています –

答えて

0

、次の2つのオプションがあり、どちらかは一方向の関係を持っているとjoinColumnがなりますあなたは単方向性を持っています。一方向の関係

を作成する方法

チェックこの例

http://www.codesenior.com/en/tutorial/Hibernate-Unidirectional-OneToMany-and-ManyToOne-Concepts

JoinColumnはowningentity(あなたのケースでコレクションを持っていないもの)であるべきとmappedbyはにする必要があります

+0

私は結合テーブルで単方向を作成しましたが、' Admin'テーブルに私の列を作成しません... – bielas

+0

テーブル内に外部キー列が必要な場合はjoinTableではありません関係の2つのタイプでManyToOneとOneToManyを使用する必要があります。joinTableは、関係が存在する場合に関係の2つの辺のIDを持つ2つの列を含む接合テーブルを作成します –

+0

です。 。上の見解私はrealtionを作成しましたが、それは失敗をスローします.. – bielas

関連する問題