What does "org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation" mean?

Solution In Progress - Updated -

Issue

  • Following exception is logged when trying to persist entity:

org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation: model.Merchant.defaultPOS -> model.PointOfSale. What is the root cause of this exception and how can it be avoided?

The code:

Merchant:
...
    @OneToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "defaultPOS_id")
    private PointOfSale defaultPOS;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "merchant")
    private List<PointOfSale> POSList = new ArrayList<PointOfSale>();
...

and

PointOfSale:

...
    @ManyToOne(cascade = CascadeType.ALL, optional=false)
    @JoinColumn(name = "merchant_id")
    @ForeignKey(name = "FK_POS_TO_MERCHANT")
    private Merchant merchant;

Test:

@RunWith(Arquillian.class)
public class MerchantPersistenceTestCase {

    @PersistenceContext
    EntityManager em;

    @Inject
    UserTransaction utx;

    @Before
    public void preparePersistenceTest() throws Exception {
        utx.begin();
        em.joinTransaction();
    }

    @After
    public void commitTransaction() throws Exception {
        utx.commit();
    }

    @Test
    @TargetsContainer("maximilien:DigicashPayment")
    public void create_merchant() {

        PointOfSale pos=new PointOfSale();
        Merchant merchant = new Merchant();
        pos.setMerchant(merchant);
        merchant.setDefaultPOS(pos);

        em.persist(merchant);
    }
}

Environment

  • Red Hat JBoss Enterprise Application Platform(EAP)
    • 6.x
    • Hibernate

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content