All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.teiid.spring.annotations.SelectQuery Maven / Gradle / Ivy

There is a newer version: 1.7.2
Show newest version
/*
 * Copyright 2012-2014 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.teiid.spring.annotations;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * Defines the Teiid View's Transformation query. This is must have annotation
 * to define Entity as View.
* * If you defined a @Entity annotation on a JAVA class and would like to use * this class as View definition in Teiid, then use this annotation to define, * how Teiid can build this View based on other Tables and Views.
*
* * For example for entity class:
* *
 * 
 * @Entity
 * @SelectQuery(select ssn as id, concat(firstname, concat(lastname,',')) as full_name, dob as dob FROM myTable)
 * public class Person {
 *    @Id
 *    private Long id;
 *    private String fullName;
 *    private date dob;
 * }
 * 
 * 
* * Will generate view in Teiid as follows
* *
 * 
 * CREATE VIEW person {
 *    id long;
 *    dob date,
 *    full_name string,
 *    PRIMARY KEY(id)
 * AS select ssn as id, dob as dob, concat(firstname, concat(lastname,',')) as full_name FROM myTable;
 * 
 * 
* * IMPOTANT: No matter how the ordering of your attributes in the * @Entity class, JPA(Hibernate) framework generates View columns in * ALPHABETICAL order. So, in @SelectQuery the ordering of the columns in * select clause MUST match to that of JPA generation. If you do not follow this * you will either end with validation errors, or with wrong data. In the above * example see how the 'dob' and 'fullName' attributes have been changed in * order.
*
* * NOTE: If you used CamelCase for your attributes in the Entity class, * the generated Teiid's View class columns will be based on the Naming Strategy * that is configured. By default SpringBoot uses * {@link org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy} * class. Which converts column names with under scores ("_"). You can define * your own naming strategy by defining the property as below example. The * example below will keep the names intact as defined. * *
 * {@code
 * spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
 * }
 * 
* * For more information checkout DDL * support in Teiid */ @Target(TYPE) @Retention(RUNTIME) public @interface SelectQuery { String value() default ""; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy