Description

None

Attachments

1
  • 03 Jul 2017, 05:41 AM

Activity

Show:

Christian Beikov February 19, 2025 at 3:53 PM

Couldn’t reproduce this anymore on ORM 6+:

/* * SPDX-License-Identifier: LGPL-2.1-or-later * Copyright Red Hat Inc. and Hibernate Authors */ package org.hibernate.orm.test.bytecode.enhancement.batch; import jakarta.persistence.Basic; import jakarta.persistence.CascadeType; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.JoinColumn; import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced; import org.hibernate.testing.orm.junit.DomainModel; import org.hibernate.testing.orm.junit.JiraKey; import org.hibernate.testing.orm.junit.SessionFactory; import org.hibernate.testing.orm.junit.SessionFactoryScope; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.List; @JiraKey("HHH-11850") @DomainModel( annotatedClasses = { BatchOneToManyTest.Parent.class, BatchOneToManyTest.Child.class } ) @SessionFactory @BytecodeEnhanced public class BatchOneToManyTest { @BeforeEach public void setupData(SessionFactoryScope scope) { Parent parent = scope.fromTransaction( s -> { Parent p = new Parent( 1L ); p.setName( "Parent Name" ); s.persist( p ); return p; } ); scope.inTransaction( s -> { List<Child> children = new ArrayList<>(); for ( long i = 0; i < 10; i++ ) { Child child = new Child( parent ); children.add( child ); } parent.setChildren( children ); s.merge( parent ); } ); } @AfterEach public void tearDown(SessionFactoryScope scope) { scope.inTransaction( session -> { session.createMutationQuery( "delete from Child" ).executeUpdate(); session.createMutationQuery( "delete from Parent" ).executeUpdate(); } ); } @Test public void testUpdateNonLazyState(SessionFactoryScope scope) { scope.inTransaction( s -> { Parent parent = s.createQuery( "from Parent", Parent.class ).uniqueResult(); parent.setName2( "second name" ); Child child = new Child( parent ); parent.getChildren().add( child ); } ); } @Entity(name = "Child") public static class Child { @Id @GeneratedValue private Long id; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "parent_id") private Parent parent; public Child() { } public Child(Parent parent) { this.parent = parent; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Parent getParent() { return parent; } public void setParent(Parent parent) { this.parent = parent; } @Override public boolean equals(Object o) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } Child child = (Child) o; if ( id != null ? !id.equals( child.id ) : child.id != null ) { return false; } return parent != null ? parent.equals( child.parent ) : child.parent == null; } @Override public int hashCode() { int result = id != null ? id.hashCode() : 0; result = 31 * result + (parent != null ? parent.hashCode() : 0); return result; } } @Entity(name = "Parent") public static class Parent { @Id private Long id; @Basic(fetch = FetchType.LAZY) private String name; private String name2; @OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL) private List<Child> children = new ArrayList<>(); public Parent() { } public Parent(Long id) { this.id = id; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getName2() { return name2; } public void setName2(String name2) { this.name2 = name2; } public List<Child> getChildren() { return children; } public void setChildren(List<Child> children) { this.children = children; } public void addChild(Child child) { children.add( child ); } @Override public String toString() { return "Parent{" + "id=" + id + '}'; } } }

Anthony Estelita February 20, 2021 at 12:54 AM

We too are seeing this (using Wildfly with Hibernate 5.3.1Final). Anyone have any workarounds for this? It appears this error is being thrown on any objects labeled with @Basic(fetch=FetchType.LAZY) and the object is being updated (saves appear to be working fine though).

Greatly appreciated!

Deno Vichas February 2, 2021 at 6:37 PM

i’m seeing this in 5.4.18 i would love to see this fixed 🙂

Xj Chen August 5, 2020 at 7:33 AM

Any news? Meet the same issue.

Nicolas Caballero December 17, 2017 at 5:40 PM
Edited

I'm also seeing this issue with OneToOne and NO_PROXY. The issue goes away when I disable the second level cache.

java.lang.ClassCastException: org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer$1 cannot be cast to java.lang.Integer at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:19) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:46) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.bindPositionalParameters(AbstractLoadPlanBasedLoader.java:348) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.bindParameterValues(AbstractLoadPlanBasedLoader.java:319) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.prepareQueryStatement(AbstractLoadPlanBasedLoader.java:238) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:190) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:121) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:86) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.loader.collection.plan.AbstractLoadPlanBasedCollectionInitializer.initialize(AbstractLoadPlanBasedCollectionInitializer.java:87) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:688) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:75) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:2185) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:565) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:247) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:561) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:132) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT] at org.hibernate.collection.internal.PersistentBag.iterator(PersistentBag.java:277) ~[hibernate-core-5.2.13-SNAPSHOT.jar:5.2.13.SNAPSHOT]

Something went wrong on our end

If this keeps happening, share this information with your admin, who should contact support.

Hash 190P1Z5 Trace d452b61414c94ab48bdfa54a0a9fe74e

Details

Assignee

Unassigned

Reporter

l(Deactivated)

Affects versions

Priority

Major