Package org.teiid.spring.annotations
Annotation Type SelectQuery
-
@Target(TYPE) @Retention(RUNTIME) public @interface SelectQuery
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:
Will generate view in Teiid as follows@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; }
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.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;
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 usesSpringPhysicalNamingStrategyclass. 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.
For more information checkout DDL support in Teiidspring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
-
-
Element Detail
-
value
String value
- Default:
- ""
-
-