HHH-18358 Bad test case replaced with one based on example from User Guide
This commit is contained in:
parent
f99bdd4b8d
commit
7862b0700a
|
@ -2,7 +2,6 @@ package org.hibernate.processor.test.typeliteral;
|
||||||
|
|
||||||
import org.hibernate.processor.test.util.CompilationTest;
|
import org.hibernate.processor.test.util.CompilationTest;
|
||||||
import org.hibernate.processor.test.util.TestForIssue;
|
import org.hibernate.processor.test.util.TestForIssue;
|
||||||
import org.hibernate.processor.test.util.TestUtil;
|
|
||||||
import org.hibernate.processor.test.util.WithClasses;
|
import org.hibernate.processor.test.util.WithClasses;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -12,26 +11,28 @@ import jakarta.persistence.EntityManager;
|
||||||
import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor;
|
import static org.hibernate.processor.test.util.TestUtil.assertMetamodelClassGeneratedFor;
|
||||||
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfFieldInMetamodelFor;
|
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfFieldInMetamodelFor;
|
||||||
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfMethodInMetamodelFor;
|
import static org.hibernate.processor.test.util.TestUtil.assertPresenceOfMethodInMetamodelFor;
|
||||||
|
import static org.hibernate.processor.test.util.TestUtil.getMetaModelSourceAsString;
|
||||||
|
|
||||||
public class TypeLiteralTest extends CompilationTest {
|
public class TypeLiteralTest extends CompilationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@WithClasses(
|
@WithClasses(value = {},
|
||||||
value = {},
|
sources = {
|
||||||
sources = "org.hibernate.processor.test.typeliteral.Simple"
|
"org.hibernate.processor.test.typeliteral.Account",
|
||||||
)
|
"org.hibernate.processor.test.typeliteral.CreditAccount",
|
||||||
|
"org.hibernate.processor.test.typeliteral.DebitAccount"
|
||||||
|
})
|
||||||
@TestForIssue(jiraKey = "HHH-18358")
|
@TestForIssue(jiraKey = "HHH-18358")
|
||||||
public void namedQueryWithTypeLiteral() {
|
public void inheritance() {
|
||||||
final String entityClass = "org.hibernate.processor.test.typeliteral.Simple";
|
final var entityClass = "org.hibernate.processor.test.typeliteral.Account";
|
||||||
|
System.out.println( getMetaModelSourceAsString( entityClass ) );
|
||||||
System.out.println( TestUtil.getMetaModelSourceAsString( entityClass ) );
|
|
||||||
|
|
||||||
assertMetamodelClassGeneratedFor( entityClass );
|
assertMetamodelClassGeneratedFor( entityClass );
|
||||||
|
|
||||||
assertPresenceOfFieldInMetamodelFor( entityClass, "QUERY_SIMPLE" );
|
assertPresenceOfFieldInMetamodelFor( entityClass, "QUERY_DEBIT_ACCOUNTS" );
|
||||||
assertPresenceOfFieldInMetamodelFor( entityClass, "QUERY_LONGER" );
|
assertPresenceOfFieldInMetamodelFor( entityClass, "QUERY_CREDIT_ACCOUNTS" );
|
||||||
|
|
||||||
assertPresenceOfMethodInMetamodelFor( entityClass, "simple", EntityManager.class );
|
assertPresenceOfMethodInMetamodelFor( entityClass, "debitAccounts", EntityManager.class );
|
||||||
assertPresenceOfMethodInMetamodelFor( entityClass, "longer", EntityManager.class );
|
assertPresenceOfMethodInMetamodelFor( entityClass, "creditAccounts", EntityManager.class );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.hibernate.processor.test.typeliteral;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import org.hibernate.annotations.processing.CheckHQL;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
import jakarta.persistence.Inheritance;
|
||||||
|
import jakarta.persistence.InheritanceType;
|
||||||
|
import jakarta.persistence.NamedQuery;
|
||||||
|
|
||||||
|
@Entity(name = "Account")
|
||||||
|
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
|
||||||
|
@CheckHQL
|
||||||
|
@NamedQuery(name = "#creditAccounts", query = "select a from Account a where type(a) = Credit")
|
||||||
|
@NamedQuery(name = "#debitAccounts", query = "select a from Account a where type(a) = org.hibernate.processor.test.typeliteral.DebitAccount")
|
||||||
|
public class Account {
|
||||||
|
@Id
|
||||||
|
private Long id;
|
||||||
|
private String owner;
|
||||||
|
private BigDecimal balance;
|
||||||
|
private BigDecimal interestRate;
|
||||||
|
//Getters and setters are omitted for brevity
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package org.hibernate.processor.test.typeliteral;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
|
||||||
|
@Entity(name = "Credit")
|
||||||
|
public class CreditAccount extends Account {
|
||||||
|
private BigDecimal creditLimit;
|
||||||
|
//Getters and setters are omitted for brevity
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package org.hibernate.processor.test.typeliteral;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
|
||||||
|
@Entity(name = "Debit")
|
||||||
|
public class DebitAccount extends Account {
|
||||||
|
private BigDecimal overdraftFee;
|
||||||
|
//Getters and setters are omitted for brevity
|
||||||
|
}
|
|
@ -1,17 +0,0 @@
|
||||||
package org.hibernate.processor.test.typeliteral;
|
|
||||||
|
|
||||||
import org.hibernate.annotations.NamedQuery;
|
|
||||||
import org.hibernate.annotations.processing.CheckHQL;
|
|
||||||
|
|
||||||
import jakarta.persistence.Entity;
|
|
||||||
import jakarta.persistence.Id;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
@CheckHQL
|
|
||||||
@NamedQuery(name = "#simple", query = "select s from Simple s where type(s) = Simple")
|
|
||||||
@NamedQuery(name = "#longer", query = "select s from Simple s where type(s) = org.hibernate.processor.test.typeliteral.Simple")
|
|
||||||
public class Simple {
|
|
||||||
@Id
|
|
||||||
private Integer id;
|
|
||||||
private String value;
|
|
||||||
}
|
|
Loading…
Reference in New Issue