After updating upgrading from 5.4.16 to 5.4.17 we had several unit tests failing in one of our projects. I did some investigation and came up with a minimum scenario and test case that reproduces the problem:
{code:java} @Entity public class Child {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@NotNull @ManyToOne private Parent parent;
public void setParent(Parent parent) { this.parent = parent; } }
@Entity public class Parent {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
@ManyToOne(cascade = CascadeType.ALL) private Child child;
public Parent(Child child) { this.child = child; this.child.setParent(this); }
public Child getChild() { return child; } } {code}
And a test case:
{code:java} @ExtendWith(SpringExtension.class) public class ParentChildTest {
@Test @Transactional public void save() { Parent parent = new Parent(new Child()); sessionFactory.getCurrentSession().save(parent); sessionFactory.getCurrentSession().setHibernateFlushMode(FlushMode.MANUAL); sessionFactory.getCurrentSession().flush(); }
@Resource private SessionFactory sessionFactory; } {code}
With 5.4.16 the following statements are executed and the test completes successfully
{code:sql} insert into parent (id, child_id) values (null, ?) insert into child (id, parent_id) values (null, ?) update parent set child_id=? where id=? {code}
With 5.4.17 the result is
{noformat} DEBUG [SQL] insert into child (id, parent_id) values (null, ?) WARN [SqlExceptionHelper] SQL Error: 23502, SQLState: 23502 ERROR [SqlExceptionHelper] NULL not allowed for column "PARENT_ID"; SQL statement: insert into child (id, parent_id) values (null, ?) [23502-200] {noformat}
If the @NotNulll annotation is removed the entities are saved without any problem, only in a different order
{code:sql} insert into child (id, parent_id) values (null, ?) insert into parent (id, child_id) values (null, ?) update child set parent_id=? where id=? {code}
# It seems to be related with the fix provided by [ HHH-10956 ]
* |
|