Support null embedded objects

Description

This is sort of the converse of https://hibernate.atlassian.net/browse/HHH-7610#icft=HHH-7610 in that I want to be able to model the case where the whole embedded field is nullable even when some of the fields of the embeddable are marked as not nullable - it has been suggested on stackoverflow that using

@AttributeOverride(name="value", column = @Column(name="error_value",nullable = true)

with a new column annotation solves this problem, and would be a fine solution, but it does not work in my case (and there is at least one "doesn't work for me" comment on stack overflow too).

Attachments

1
  • 13 Sep 2021, 03:03 PM

Activity

Show:

Paul Harrison September 13, 2021 at 3:04 PM

I have attached a compressed tar file with some example code of what is not working as expected

Paul Harrison September 9, 2021 at 9:58 AM
Edited

BTW I get a this error

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value : org.ivoa.dm.sample.catalog.LuminosityMeasurement.error
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:779)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:741)
at org.hibernate.engine.spi.CascadingActions$7.cascade(CascadingActions.java:298)
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:510)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:434)
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
at org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:543)
at org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:474)
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:437)
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:220)
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:153)
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:459)
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:293)
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:135)
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:773)

Caused by: org.hibernate.PropertyValueException: not-null property references a null or transient value : org.ivoa.dm.sample.catalog.LuminosityMeasurement.error
at org.hibernate.engine.internal.Nullability.checkNullability(Nullability.java:111)
at org.hibernate.engine.internal.Nullability.checkNullability(Nullability.java:55)
at org.hibernate.action.internal.AbstractEntityInsertAction.nullifyTransientReferencesIfNotAlready(AbstractEntityInsertAction.java:116)
at org.hibernate.action.internal.AbstractEntityInsertAction.makeEntityManaged(AbstractEntityInsertAction.java:125)
at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:289)
at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263)
at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:250)
at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:338)
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:287)
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:135)
at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185)
at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128)
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:773)
... 106 more

Paul Harrison September 9, 2021 at 9:51 AM

My case is from a complex auto-generated model - I will endeavour to provide a small example

Details

Assignee

Reporter

Components

Priority

Created September 9, 2021 at 9:50 AM
Updated September 13, 2021 at 3:04 PM