Saltar al contenido

Cree una escena calculada usando la aplicación Hibernate en SAP HANA

También es posible ejecutar preguntas más complejas en una vista calculada, por ejemplo, consultas geoespaciales aprovechando el motor geoespacial de SAP HANA.

La consulta de muestra en el código siguiente recupera todos (al menos) los productos suministrados por un proveedor con sede en Europa.

Crea una clase Java llamada TestCalculationViewSpatialQuery en un paquete llamado com.sap.hana.hibernate.tutorial.cv (haga clic con el botón derecho en el proyecto y seleccione Nuevo -> Clase o usa el Archivo -> Nuevo -> Clase barra de menú), luego pegue el siguiente contenido:

package com.sap.hana.hibernate.tutorial.cv;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;

import org.geolatte.geom.Polygon;
import org.geolatte.geom.codec.Wkt;
import org.geolatte.geom.codec.WktDecoder;

public class TestCalculationViewSpatialQuery {

	public static void main(String[] args) {
		try {
			EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("Tutorial");
			EntityManager entityManager = entityManagerFactory.createEntityManager();

			// Select all products provided by suppliers within a region
			TypedQuery<CdProduct> regionalProductsQuery = entityManager.createQuery("select c from CdProduct c where within(c.point, :area) = true", CdProduct.class);

			// Create a polygon describing a box around Europe
			WktDecoder decoder = Wkt.newDecoder(Wkt.Dialect.HANA_EWKT);
			Polygon<?> europeBox = (Polygon<?>) decoder.decode("POLYGON((35 -10, 35 30, 71 30, 71 -10, 35 -10))");
			regionalProductsQuery.setParameter("area", europeBox);

			// Return all products provided by suppliers within the Europe box
			List<CdProduct> productsFromEurope = regionalProductsQuery.getResultList();

			System.out.println("Found " + productsFromEurope.size() + " products from Europe");

			entityManager.clear();
			entityManager.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.exit(0);
	}
}

Guarde el archivo de la clase.

Ejecute la aplicación haciendo clic derecho en el archivo de clase y seleccionando Ejecutar como -> Aplicación Java o haga clic en el icono.

Debería ver el siguiente registro de salida en su consola:

Found 10176 products from Europe