2012-03-20 7 views
2

Я пробую свой путь вокруг JPA, но я не могу заставить это работать так, как я их понимаю.Not Null Property Exception with JPA onetoone mapping

Сво onetoone двунаправленное отображение между Порядком и классом OrderInvoice который является обязательным ассоциация

Мои объекты помечаются как это

@Entity 
@Table(name = "Orders") 
public class Order { 
    @Id 
    @GeneratedValue 
    @Column(name = "ORDER_ID") 
    private int orderId; 

    @OneToOne(optional=false,cascade=CascadeType.ALL, mappedBy="order", targetEntity=OrderInvoice.class) 
    private OrderInvoice invoice; 
} 

@Entity 
@Table(name = "ORDER_INVOICE") 
public class OrderInvoice { 
    @Id 
    @GeneratedValue 
    @Column(name = "INVOICE_ID", nullable = false) 
    private int invoiceId; 

    @OneToOne(optional = false) 
    @JoinColumn(name="ORDER_ID") 
    private Order order; 
} 

Мой тестовый класс, как это.

@Test 
public void createOrder() { 
    Order order = createOrderImpl(); 
    assertNotNull(order); 
} 

private Order createOrderImpl() { 
    OrderInvoice orderInvoice = new OrderInvoice(new Date(), 100.0, null, 
      null, new Date()); 
    Order order = new Order(100.0, "JOHN Doe's Order", new Date(), new Date(),orderInvoice); 
    orderDao.create(order); 
    return order; 
} 

Но я встречая ниже проблемы, когда я запускаю мой тест

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: order.OrderInvoice.order 
    at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614) 

Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value: order.OrderInvoice.order 
    at org.hibernate.engine.Nullability.checkNullability(Nullability.java:95) 

ответ

1

пытаются

orderInvoice.setOrder(order); 
orderDao.create(order);