2017-09-10 24 views
0

私はクラス、Ordersクラス、Paymentクラスを持っています。 カスタマーとオーダーには1対多の関係があります。 注文と支払いには1対多の関係があります。休止状態で一度に3つのテーブルを挿入

Orders.java(モデル)に問題があると思います これを解決する方法を教えてください。

これは、ERDです:

enter image description here

私はこのクラスが

にマッピングされていない。これは私の注文のJavaクラス(モデル)

@Entity 
public class Orders implements Serializable { 
private Integer OrderID; 
private Customer customer; 
private String OrderDate; 

private List<Payment> payments; 


/** 
* @return the OrderID 
*/ 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
public Integer getOrderID() { 
    return OrderID; 
} 

/** 
* @param OrderID the OrderID to set 
*/ 
public void setOrderID(Integer OrderID) { 
    this.OrderID = OrderID; 
} 

/** 
* @return the customer 
*/ 
@ManyToOne 
@JoinColumn(name = "Cust_Id") 
public Customer getCustomer() { 
    return customer; 
} 

/** 
* @param customer the customer to set 
*/ 
public void setCustomer(Customer customer) { 
    this.customer = customer; 
} 

/** 
* @return the OrderDate 
*/ 
public String getOrderDate() { 
    return OrderDate; 
} 

/** 
* @param OrderDate the OrderDate to set 
*/ 
public void setOrderDate(String OrderDate) { 
    this.OrderDate = OrderDate; 
} 

/** 
* @return the payments 
*/ 
@OneToMany(targetEntity = Payment.class, mappedBy = "orders", cascade = CascadeType.ALL,fetch = FetchType.EAGER) 
public List<Payment> getPayments() { 
    return payments; 
} 

/** 
* @param payments the payments to set 
*/ 
public void setPayments(List<Payment> payments) { 
    this.payments = payments; 
} 


} 

ERROR

run: 
Hibernate many to many (Annotation) 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Sep 10, 2017 3:25:20 PM org.hibernate.validator.internal.util.Version <clinit> 
INFO: HV000001: Hibernate Validator 5.0.0.Final 
Initial SessionFactory creation failed.org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:17) 
    at util.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at Main.Demo.main(Demo.java:49) 
Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 
    at org.hibernate.loader.BasicLoader.postInstantiate(BasicLoader.java:94) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:119) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:71) 
    at org.hibernate.loader.entity.EntityLoader.<init>(EntityLoader.java:54) 
    at org.hibernate.loader.entity.BatchingEntityLoader.createBatchingEntityLoader(BatchingEntityLoader.java:133) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1914) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createEntityLoader(AbstractEntityPersister.java:1937) 
    at org.hibernate.persister.entity.AbstractEntityPersister.createLoaders(AbstractEntityPersister.java:3205) 
    at org.hibernate.persister.entity.AbstractEntityPersister.postInstantiate(AbstractEntityPersister.java:3191) 
    at org.hibernate.persister.entity.SingleTableEntityPersister.postInstantiate(SingleTableEntityPersister.java:728) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:348) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845) 
    at util.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) 
    ... 2 more 
Java Result: 1 
だと思います
+1

'List'の代わりに' Set'を試してみてください。 '@Fetch(value = FetchMode.SUBSELECT)'を試すこともできます。 –

答えて

1

Hereあなたは答えを見つけることができます。

HibernateはFetchType.EAGERの2つのコレクションが嫌いです。