use of jakarta.persistence.NamedNativeQuery in project hibernate-orm by hibernate.
the class JPAXMLOverriddenAnnotationReader method buildNamedNativeQueries.
public static List<NamedNativeQuery> buildNamedNativeQueries(List<JaxbNamedNativeQuery> elements, XMLContext.Default defaults, ClassLoaderAccess classLoaderAccess) {
List<NamedNativeQuery> namedQueries = new ArrayList<>();
for (JaxbNamedNativeQuery element : elements) {
AnnotationDescriptor ann = new AnnotationDescriptor(NamedNativeQuery.class);
copyAttribute(ann, "name", element.getName(), false);
copyAttribute(ann, "query", element.getQuery(), true);
buildQueryHints(element.getHint(), ann);
String clazzName = element.getResultClass();
if (StringHelper.isNotEmpty(clazzName)) {
Class clazz;
try {
clazz = classLoaderAccess.classForName(XMLContext.buildSafeClassName(clazzName, defaults));
} catch (ClassLoadingException e) {
throw new AnnotationException("Unable to find entity-class: " + clazzName, e);
}
ann.setValue("resultClass", clazz);
}
copyAttribute(ann, "result-set-mapping", element.getResultSetMapping(), false);
namedQueries.add(AnnotationFactory.create(ann));
}
return namedQueries;
}
use of jakarta.persistence.NamedNativeQuery in project hibernate-orm by hibernate.
the class JPAXMLOverriddenMetadataProvider method getDefaults.
@Override
public Map<Object, Object> getDefaults() {
if (!xmlMappingEnabled) {
return Collections.emptyMap();
} else {
if (defaults == null) {
defaults = new HashMap<>();
XMLContext.Default xmlDefaults = xmlContext.getDefaultWithGlobalCatalogAndSchema();
defaults.put("schema", xmlDefaults.getSchema());
defaults.put("catalog", xmlDefaults.getCatalog());
defaults.put("delimited-identifier", xmlDefaults.getDelimitedIdentifier());
defaults.put("cascade-persist", xmlDefaults.getCascadePersist());
List<Class> entityListeners = new ArrayList<Class>();
for (String className : xmlContext.getDefaultEntityListeners()) {
try {
entityListeners.add(classLoaderAccess.classForName(className));
} catch (ClassLoadingException e) {
throw new IllegalStateException("Default entity listener class not found: " + className);
}
}
defaults.put(EntityListeners.class, entityListeners);
for (JaxbEntityMappings entityMappings : xmlContext.getAllDocuments()) {
List<JaxbSequenceGenerator> jaxbSequenceGenerators = entityMappings.getSequenceGenerator();
List<SequenceGenerator> sequenceGenerators = (List<SequenceGenerator>) defaults.get(SequenceGenerator.class);
if (sequenceGenerators == null) {
sequenceGenerators = new ArrayList<>();
defaults.put(SequenceGenerator.class, sequenceGenerators);
}
for (JaxbSequenceGenerator element : jaxbSequenceGenerators) {
sequenceGenerators.add(JPAXMLOverriddenAnnotationReader.buildSequenceGeneratorAnnotation(element));
}
List<JaxbTableGenerator> jaxbTableGenerators = entityMappings.getTableGenerator();
List<TableGenerator> tableGenerators = (List<TableGenerator>) defaults.get(TableGenerator.class);
if (tableGenerators == null) {
tableGenerators = new ArrayList<>();
defaults.put(TableGenerator.class, tableGenerators);
}
for (JaxbTableGenerator element : jaxbTableGenerators) {
tableGenerators.add(JPAXMLOverriddenAnnotationReader.buildTableGeneratorAnnotation(element, xmlDefaults));
}
List<NamedQuery> namedQueries = (List<NamedQuery>) defaults.get(NamedQuery.class);
if (namedQueries == null) {
namedQueries = new ArrayList<>();
defaults.put(NamedQuery.class, namedQueries);
}
List<NamedQuery> currentNamedQueries = JPAXMLOverriddenAnnotationReader.buildNamedQueries(entityMappings.getNamedQueries(), xmlDefaults, classLoaderAccess);
namedQueries.addAll(currentNamedQueries);
List<NamedNativeQuery> namedNativeQueries = (List<NamedNativeQuery>) defaults.get(NamedNativeQuery.class);
if (namedNativeQueries == null) {
namedNativeQueries = new ArrayList<>();
defaults.put(NamedNativeQuery.class, namedNativeQueries);
}
List<NamedNativeQuery> currentNamedNativeQueries = JPAXMLOverriddenAnnotationReader.buildNamedNativeQueries(entityMappings.getNamedNativeQueries(), xmlDefaults, classLoaderAccess);
namedNativeQueries.addAll(currentNamedNativeQueries);
List<SqlResultSetMapping> sqlResultSetMappings = (List<SqlResultSetMapping>) defaults.get(SqlResultSetMapping.class);
if (sqlResultSetMappings == null) {
sqlResultSetMappings = new ArrayList<>();
defaults.put(SqlResultSetMapping.class, sqlResultSetMappings);
}
List<SqlResultSetMapping> currentSqlResultSetMappings = JPAXMLOverriddenAnnotationReader.buildSqlResultSetMappings(entityMappings.getSqlResultSetMappings(), xmlDefaults, classLoaderAccess);
sqlResultSetMappings.addAll(currentSqlResultSetMappings);
List<NamedStoredProcedureQuery> namedStoredProcedureQueries = (List<NamedStoredProcedureQuery>) defaults.get(NamedStoredProcedureQuery.class);
if (namedStoredProcedureQueries == null) {
namedStoredProcedureQueries = new ArrayList<>();
defaults.put(NamedStoredProcedureQuery.class, namedStoredProcedureQueries);
}
List<NamedStoredProcedureQuery> currentNamedStoredProcedureQueries = JPAXMLOverriddenAnnotationReader.buildNamedStoreProcedureQueries(entityMappings.getNamedProcedureQueries(), xmlDefaults, classLoaderAccess);
namedStoredProcedureQueries.addAll(currentNamedStoredProcedureQueries);
}
}
return defaults;
}
}
use of jakarta.persistence.NamedNativeQuery in project hibernate-orm by hibernate.
the class NamedQueryTest method testNativeNamedQueriesOrdinalParametersConflict.
@Test
public void testNativeNamedQueriesOrdinalParametersConflict() {
doInJPA(this::entityManagerFactory, entityManager -> {
Query query = entityManager.createNamedQuery("NamedNativeQuery");
query.setParameter(1, GAME_TITLES[0]);
List list = query.getResultList();
assertEquals(1, list.size());
final Session session = entityManager.unwrap(Session.class);
final org.hibernate.query.Query sessionQuery = session.createNativeQuery("select * from Game g where title = ?");
sessionQuery.setParameter(1, GAME_TITLES[0]);
list = sessionQuery.getResultList();
query.setParameter(1, GAME_TITLES[0]);
assertEquals(1, list.size());
});
}
use of jakarta.persistence.NamedNativeQuery in project hibernate-orm by hibernate.
the class NamedQueryTest method testNativeNamedQueriesOrdinalParametersConflict2.
@Test
public void testNativeNamedQueriesOrdinalParametersConflict2() {
doInJPA(this::entityManagerFactory, entityManager -> {
Query query = entityManager.createNamedQuery("NamedNativeQuery");
query.setParameter(1, GAME_TITLES[0]);
List list = query.getResultList();
assertEquals(1, list.size());
final Session session = entityManager.unwrap(Session.class);
final org.hibernate.query.Query sessionQuery = session.getNamedNativeQuery("NamedNativeQuery");
sessionQuery.setParameter(1, GAME_TITLES[0]);
list = sessionQuery.getResultList();
query.setParameter(1, GAME_TITLES[0]);
assertEquals(1, list.size());
});
}
Aggregations