Description
None
Attachments
1
- 03 Jul 2017, 05:41 AM
Activity
Show:
Christian Beikov February 19, 2025 at 3:53 PM
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 PMEdited
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
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 + '}'; } } }