HHH-953 / HHH-15667 Test cases for these issues
Signed-off-by: Jan Schatteman <jschatte@redhat.com>
This commit is contained in:
parent
fdae11f791
commit
58a4a4dd73
|
@ -0,0 +1,139 @@
|
|||
/*
|
||||
* SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
* Copyright Red Hat Inc. and Hibernate Authors
|
||||
*/
|
||||
package org.hibernate.orm.test.bytecode.enhancement.lazy;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Hibernate;
|
||||
|
||||
import org.hibernate.testing.FailureExpected;
|
||||
import org.hibernate.testing.orm.junit.JiraKey;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import jakarta.persistence.Basic;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.EntityResult;
|
||||
import jakarta.persistence.FetchType;
|
||||
import jakarta.persistence.FieldResult;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.NamedNativeQuery;
|
||||
import jakarta.persistence.SqlResultSetMapping;
|
||||
import jakarta.persistence.Table;
|
||||
|
||||
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
|
||||
import static org.hibernate.testing.transaction.TransactionUtil.doInHibernate;
|
||||
|
||||
/**
|
||||
* @author Jan Schatteman
|
||||
* @author Christian Beikov
|
||||
*/
|
||||
@RunWith( BytecodeEnhancerRunner.class )
|
||||
public class LazySqlResultMappingTest extends BaseCoreFunctionalTestCase {
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class[]{ User.class };
|
||||
}
|
||||
|
||||
@Before
|
||||
public void prepareData() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
session.persist(new User(1L, (byte)1));
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@After
|
||||
public void cleanupData() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
session.createMutationQuery("delete from User").executeUpdate();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetIdAndPrincipalUsingFieldResults() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
List<User> users = session.createNamedQuery( "getIdAndPrincipalUsingFieldResults", User.class ).getResultList();
|
||||
Assertions.assertTrue( Hibernate.isPropertyInitialized( users.get(0), "principal" ) );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@JiraKey( value = "HHH-953" )
|
||||
public void testGetIdAndPrincipalWithoutUsingFieldResults() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
List<User> users = session.createNamedQuery( "getIdAndPrincipalWithoutUsingFieldResults", User.class ).getResultList();
|
||||
Assertions.assertTrue( Hibernate.isPropertyInitialized( users.get(0), "principal" ) );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
@JiraKey( value = "HHH-15667" )
|
||||
@FailureExpected(jiraKey = "HHH-15667", message = "SQLGrammarException: Unable to find column position by name: principal")
|
||||
public void testGetIdWithoutUsingFieldResults() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
List<User> users = session.createNamedQuery( "getIdWithoutUsingFieldResults", User.class ).getResultList();
|
||||
Assertions.assertFalse( Hibernate.isPropertyInitialized( users.get(0), "principal" ) );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetIdUsingFieldResults() {
|
||||
doInHibernate( this::sessionFactory,
|
||||
session -> {
|
||||
List<User> users = session.createNamedQuery( "getIdUsingFieldResults", User.class ).getResultList();
|
||||
Assertions.assertFalse( Hibernate.isPropertyInitialized( users.get(0), "principal" ) );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@NamedNativeQuery(name = "getIdAndPrincipalUsingFieldResults", query = "select u.id as id, u.principal as principal from user_tbl u", resultSetMapping = "id_and_principal_with_fields")
|
||||
@NamedNativeQuery(name = "getIdUsingFieldResults", query = "select u.id as id from user_tbl u", resultSetMapping = "id_with_fields")
|
||||
@NamedNativeQuery(name = "getIdAndPrincipalWithoutUsingFieldResults", query = "select u.id as id, u.principal as principal from user_tbl u", resultSetMapping = "without_fields")
|
||||
@NamedNativeQuery(name = "getIdWithoutUsingFieldResults", query = "select u.id as id from user_tbl u", resultSetMapping = "without_fields")
|
||||
|
||||
@SqlResultSetMapping( name = "id_and_principal_with_fields",
|
||||
entities = @EntityResult( entityClass = User.class, fields = { @FieldResult(name = "id", column = "id"), @FieldResult(name = "principal", column = "principal") } )
|
||||
)
|
||||
@SqlResultSetMapping( name = "id_with_fields",
|
||||
entities = @EntityResult( entityClass = User.class, fields = { @FieldResult(name = "id", column = "id") } )
|
||||
)
|
||||
@SqlResultSetMapping( name = "without_fields",
|
||||
entities = @EntityResult( entityClass = User.class )
|
||||
)
|
||||
|
||||
@Entity( name = "User")
|
||||
@Table(name = "user_tbl")
|
||||
private static class User {
|
||||
@Id
|
||||
private Long id;
|
||||
@Basic(fetch = FetchType.LAZY)
|
||||
private Byte principal;
|
||||
|
||||
public User() {
|
||||
}
|
||||
|
||||
public User(Long id, Byte principal) {
|
||||
this.id = id;
|
||||
this.principal = principal;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue