split + rewrite query language chapter to new HQL guide document
This commit is contained in:
parent
cf9e57007a
commit
4c8ed70a69
|
@ -194,6 +194,57 @@ tasks.register('renderIntroduction', AsciidoctorTask) {task->
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.register('renderQLPdf', AsciidoctorPdfTask) {task->
|
||||||
|
group = "Documentation"
|
||||||
|
description = 'Renders the Query Language document in PDF format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
inputs.property "hibernate-version", project.ormVersion
|
||||||
|
|
||||||
|
sourceDir = file( 'src/main/asciidoc/querylanguage' )
|
||||||
|
baseDir = file( 'src/main/asciidoc/querylanguage' )
|
||||||
|
sources {
|
||||||
|
include 'Hibernate_Query_Language.adoc'
|
||||||
|
}
|
||||||
|
outputDir = "$buildDir/asciidoc/querylanguage/pdf"
|
||||||
|
|
||||||
|
attributes jpaJavadocUrlPrefix: "https://javaee.github.io/javaee-spec/javadocs/javax/persistence/"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register('renderQL', AsciidoctorTask) {task->
|
||||||
|
group = "Documentation"
|
||||||
|
description = 'Renders the Query Language document in HTML format using Asciidoctor.'
|
||||||
|
tasks.buildDocs.dependsOn task
|
||||||
|
tasks.buildDocsForPublishing.dependsOn task
|
||||||
|
inputs.property "hibernate-version", project.ormVersion
|
||||||
|
|
||||||
|
sourceDir = file( 'src/main/asciidoc/querylanguage' )
|
||||||
|
sources {
|
||||||
|
include 'Hibernate_Query_Language.adoc'
|
||||||
|
}
|
||||||
|
outputDir = "$buildDir/asciidoc/querylanguage/html_single"
|
||||||
|
|
||||||
|
attributes linkcss: true,
|
||||||
|
stylesheet: "css/hibernate.css",
|
||||||
|
docinfo: 'private',
|
||||||
|
jpaJavadocUrlPrefix: "https://javaee.github.io/javaee-spec/javadocs/javax/persistence/"
|
||||||
|
|
||||||
|
resources {
|
||||||
|
from('src/main/asciidoc/querylanguage/') {
|
||||||
|
include 'images/**'
|
||||||
|
}
|
||||||
|
from('src/main/style/asciidoctor') {
|
||||||
|
include 'images/**'
|
||||||
|
}
|
||||||
|
from('src/main/style/asciidoctor') {
|
||||||
|
include 'css/**'
|
||||||
|
}
|
||||||
|
from('src/main/style/asciidoctor') {
|
||||||
|
include 'js/**'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// User Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
// User Guide ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
tasks.register('renderUserGuide', AsciidoctorTask) { task ->
|
tasks.register('renderUserGuide', AsciidoctorTask) { task ->
|
||||||
|
|
|
@ -1425,10 +1425,10 @@ Let's pause to remember the annotations we've met so far.
|
||||||
|===
|
|===
|
||||||
| Annotation | Purpose | JPA-standard
|
| Annotation | Purpose | JPA-standard
|
||||||
|
|
||||||
| `@Entity` | Declare an entity class | ✓
|
| `@Entity` | Declare an entity class | ✔
|
||||||
| `@MappedSuperclass` | Declare a non-entity class with mapped attributes inherited by an entity | ✓
|
| `@MappedSuperclass` | Declare a non-entity class with mapped attributes inherited by an entity | ✔
|
||||||
| `@Embeddable` | Declare an embeddable type | ✓
|
| `@Embeddable` | Declare an embeddable type | ✔
|
||||||
| `@IdClass` | declare the identifier class for an entity with multiple `@Id` attributes | ✓
|
| `@IdClass` | declare the identifier class for an entity with multiple `@Id` attributes | ✔
|
||||||
|===
|
|===
|
||||||
|
|
||||||
.Declaring basic attributes
|
.Declaring basic attributes
|
||||||
|
@ -1436,14 +1436,14 @@ Let's pause to remember the annotations we've met so far.
|
||||||
|===
|
|===
|
||||||
| Annotation | Purpose | | JPA-standard
|
| Annotation | Purpose | | JPA-standard
|
||||||
|
|
||||||
| `@Id` | Declare a basic-typed identifier attribute | | ✓
|
| `@Id` | Declare a basic-typed identifier attribute | | ✔
|
||||||
| `@Version` | Declare a version attribute | | ✓
|
| `@Version` | Declare a version attribute | | ✔
|
||||||
| `@Basic` | Declare a basic attribute | Default | ✓
|
| `@Basic` | Declare a basic attribute | Default | ✔
|
||||||
| `@EmbeddedId` | Declare an embeddable-typed identifier attribute | | ✓
|
| `@EmbeddedId` | Declare an embeddable-typed identifier attribute | | ✔
|
||||||
| `@Embedded` | Declare an embeddable-typed attribute | Inferred | ✓
|
| `@Embedded` | Declare an embeddable-typed attribute | Inferred | ✔
|
||||||
| `@Enumerated` | Declare an `enum`-typed attribute and specify how it is encoded | Inferred | ✓
|
| `@Enumerated` | Declare an `enum`-typed attribute and specify how it is encoded | Inferred | ✔
|
||||||
| `@Array` | Declare that an attribute maps to a SQL `ARRAY`, and specify the length | Inferred | ✗
|
| `@Array` | Declare that an attribute maps to a SQL `ARRAY`, and specify the length | Inferred | ✖
|
||||||
| `@ElementCollection` | Declare that a collection is mapped to a dedicated table | | ✓
|
| `@ElementCollection` | Declare that a collection is mapped to a dedicated table | | ✔
|
||||||
|===
|
|===
|
||||||
|
|
||||||
.Converters and compositional basic types
|
.Converters and compositional basic types
|
||||||
|
@ -1451,13 +1451,13 @@ Let's pause to remember the annotations we've met so far.
|
||||||
|===
|
|===
|
||||||
| Annotation | Purpose | JPA-standard
|
| Annotation | Purpose | JPA-standard
|
||||||
|
|
||||||
| `@Converter` | Register an `AttributeConverter` | ✓
|
| `@Converter` | Register an `AttributeConverter` | ✔
|
||||||
| `@Convert` | Apply a converter to an attribute | ✓
|
| `@Convert` | Apply a converter to an attribute | ✔
|
||||||
| `@JavaType` | Explicitly specify an implementation of `JavaType` for a basic attribute | ✗
|
| `@JavaType` | Explicitly specify an implementation of `JavaType` for a basic attribute | ✖
|
||||||
| `@JdbcType` | Explicitly specify an implementation of `JdbcType` for a basic attribute | ✗
|
| `@JdbcType` | Explicitly specify an implementation of `JdbcType` for a basic attribute | ✖
|
||||||
| `@JdbcTypeCode` | Explicitly specify a JDBC type code used to determine the `JdbcType` for a basic attribute | ✗
|
| `@JdbcTypeCode` | Explicitly specify a JDBC type code used to determine the `JdbcType` for a basic attribute | ✖
|
||||||
| `@JavaTypeRegistration` | Register a `JavaType` for a given Java type | ✗
|
| `@JavaTypeRegistration` | Register a `JavaType` for a given Java type | ✖
|
||||||
| `@JdbcTypeRegistration` | Register a `JdbcType` for a given JDBC type code | ✗
|
| `@JdbcTypeRegistration` | Register a `JdbcType` for a given JDBC type code | ✖
|
||||||
|===
|
|===
|
||||||
|
|
||||||
.System-generated identifiers
|
.System-generated identifiers
|
||||||
|
@ -1465,11 +1465,11 @@ Let's pause to remember the annotations we've met so far.
|
||||||
|===
|
|===
|
||||||
| Annotation | Purpose | JPA-standard
|
| Annotation | Purpose | JPA-standard
|
||||||
|
|
||||||
| `@GeneratedValue` | Specify that an identifier is system-generated | ✓
|
| `@GeneratedValue` | Specify that an identifier is system-generated | ✔
|
||||||
| `@SequenceGenerator` | Define an id generated backed by on a database sequence | ✓
|
| `@SequenceGenerator` | Define an id generated backed by on a database sequence | ✔
|
||||||
| `@TableGenerator` | Define an id generated backed by a database table | ✓
|
| `@TableGenerator` | Define an id generated backed by a database table | ✔
|
||||||
| `@IdGeneratorType` | Declare an annotation that associates a custom `Generator` with each `@Id` attribute it annotates | ✗
|
| `@IdGeneratorType` | Declare an annotation that associates a custom `Generator` with each `@Id` attribute it annotates | ✖
|
||||||
| `@ValueGenerationType` | Declare an annotation that associates a custom `Generator` with each `@Basic` attribute it annotates | ✗
|
| `@ValueGenerationType` | Declare an annotation that associates a custom `Generator` with each `@Basic` attribute it annotates | ✖
|
||||||
|===
|
|===
|
||||||
|
|
||||||
.Declaring entity associations
|
.Declaring entity associations
|
||||||
|
@ -1477,11 +1477,11 @@ Let's pause to remember the annotations we've met so far.
|
||||||
|===
|
|===
|
||||||
| Annotation | Purpose | JPA-standard
|
| Annotation | Purpose | JPA-standard
|
||||||
|
|
||||||
| `@ManyToOne` | Declare the single-valued side of a many-to-one association (the owning side) | ✓
|
| `@ManyToOne` | Declare the single-valued side of a many-to-one association (the owning side) | ✔
|
||||||
| `@OneToMany` | Declare the many-valued side of a many-to-one association (the unowned side) | ✓
|
| `@OneToMany` | Declare the many-valued side of a many-to-one association (the unowned side) | ✔
|
||||||
| `@ManyToMany` | Declare either side of a one-to-one association | ✓
|
| `@ManyToMany` | Declare either side of a one-to-one association | ✔
|
||||||
| `@OneToOne` | Declare either side of a one-to-one association | ✓
|
| `@OneToOne` | Declare either side of a one-to-one association | ✔
|
||||||
| `@MapsId` | Declare that the owning side of a `@OneToOne` association maps the primary key column | ✓
|
| `@MapsId` | Declare that the owning side of a `@OneToOne` association maps the primary key column | ✔
|
||||||
|===
|
|===
|
||||||
|
|
||||||
Phew!
|
Phew!
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
:pdf-theme: theme.yml
|
:pdf-theme: ../pdf/theme.yml
|
||||||
:source-highlighter: rouge
|
:source-highlighter: rouge
|
||||||
:icons: font
|
:icons: font
|
||||||
:doctype: book
|
:doctype: book
|
||||||
:pdf-fontsdir: fonts
|
:pdf-fontsdir: ../pdf/fonts
|
||||||
:docsBase: https://docs.jboss.org/hibernate/orm
|
:docsBase: https://docs.jboss.org/hibernate/orm
|
||||||
:versionDocBase: {docsBase}/6.3
|
:versionDocBase: {docsBase}/6.3
|
||||||
:userGuideBase: {versionDocBase}/userguide/html_single/Hibernate_User_Guide.html
|
:userGuideBase: {versionDocBase}/userguide/html_single/Hibernate_User_Guide.html
|
||||||
|
@ -39,7 +39,7 @@ include::Mapping.adoc[]
|
||||||
|
|
||||||
include::Interacting.adoc[]
|
include::Interacting.adoc[]
|
||||||
|
|
||||||
// include::../userguide/chapters/query/hql/QueryLanguage.adoc[]
|
// include::../userguide/chapters/query/hql/Hibernate_Query_Language.adoc[]
|
||||||
|
|
||||||
<<<
|
<<<
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
||||||
|
identifier | INTEGER_LITERAL | expression
|
|
@ -0,0 +1,4 @@
|
||||||
|
select distinct
|
||||||
|
p.last_name
|
||||||
|
from
|
||||||
|
person p
|
|
@ -0,0 +1,12 @@
|
||||||
|
select
|
||||||
|
c.id,
|
||||||
|
c.duration,
|
||||||
|
c.phone_id,
|
||||||
|
c.call_timestamp
|
||||||
|
from
|
||||||
|
phone_call c
|
||||||
|
join
|
||||||
|
Phone p
|
||||||
|
on p.id=c.phone_id
|
||||||
|
where
|
||||||
|
p.phone_number='123-456-7890'
|
|
@ -0,0 +1,11 @@
|
||||||
|
limitClause
|
||||||
|
: "LIMIT" parameterOrIntegerLiteral
|
||||||
|
|
||||||
|
offsetClause
|
||||||
|
: "OFFSET" parameterOrIntegerLiteral ("ROW" | "ROWS")?
|
||||||
|
|
||||||
|
fetchClause
|
||||||
|
: "FETCH" ("FIRST" | "NEXT")
|
||||||
|
(parameterOrIntegerLiteral | parameterOrNumberLiteral "%")
|
||||||
|
("ROW" | "ROWS")
|
||||||
|
("ONLY" | "WITH" "TIES")
|
|
@ -0,0 +1,10 @@
|
||||||
|
sortExpression sortDirection? nullsPrecedence?
|
||||||
|
|
||||||
|
sortExpression
|
||||||
|
: identifier | INTEGER_LITERAL | expression
|
||||||
|
|
||||||
|
sortDirection
|
||||||
|
: "ASC" | "DESC"
|
||||||
|
|
||||||
|
nullsPrecedence
|
||||||
|
: "NULLS" ("FIRST" | "LAST")
|
|
@ -0,0 +1,7 @@
|
||||||
|
expression "NOT"? "IN" inList
|
||||||
|
|
||||||
|
inList
|
||||||
|
: ("ELEMENTS"|"INDICES") "(" simplePath ")"
|
||||||
|
| "(" (expression ("," expression)*)? ")"
|
||||||
|
| "(" subquery ")"
|
||||||
|
| parameter
|
|
@ -0,0 +1 @@
|
||||||
|
expression "NOT"? ("LIKE" | "ILIKE") expression ("ESCAPE" character)?
|
|
@ -0,0 +1 @@
|
||||||
|
"CASE" ("WHEN" predicate "THEN" expression)+ ("ELSE" expression)? "END"
|
|
@ -0,0 +1,7 @@
|
||||||
|
(expression | instantiation) alias?
|
||||||
|
|
||||||
|
instantiation
|
||||||
|
: "NEW" instantiationTarget "(" instantiationArguments ")"
|
||||||
|
|
||||||
|
alias
|
||||||
|
: "AS"? IDENTIFIER
|
|
@ -0,0 +1 @@
|
||||||
|
"CASE" expression ("WHEN" expression "THEN" expression)+ ("ELSE" expression)? "END"
|
|
@ -0,0 +1,2 @@
|
||||||
|
deleteStatement
|
||||||
|
: "DELETE" "FROM"? targetEntity whereClause?
|
|
@ -0,0 +1,14 @@
|
||||||
|
insertStatement
|
||||||
|
: "INSERT" "INTO"? targetEntity targetFields (queryExpression | valuesList)
|
||||||
|
|
||||||
|
targetEntity
|
||||||
|
: entityName variable?
|
||||||
|
|
||||||
|
targetFields
|
||||||
|
: "(" simplePath ("," simplePath)* ")"
|
||||||
|
|
||||||
|
valuesList
|
||||||
|
: "VALUES" values ("," values)*
|
||||||
|
|
||||||
|
values
|
||||||
|
: "(" expression ("," expression)* ")"
|
|
@ -0,0 +1,36 @@
|
||||||
|
selectStatement
|
||||||
|
: queryExpression
|
||||||
|
|
||||||
|
queryExpression
|
||||||
|
: withClause? orderedQuery (setOperator orderedQuery)*
|
||||||
|
|
||||||
|
orderedQuery
|
||||||
|
: (query | "(" queryExpression ")") queryOrder?
|
||||||
|
|
||||||
|
query
|
||||||
|
: selectClause fromClause? whereClause? (groupByClause havingClause?)?
|
||||||
|
| fromClause whereClause? (groupByClause havingClause?)? selectClause?
|
||||||
|
|
||||||
|
queryOrder
|
||||||
|
: orderByClause limitClause? offsetClause? fetchClause?
|
||||||
|
|
||||||
|
fromClause
|
||||||
|
: "FROM" entityWithJoins ("," entityWithJoins)*
|
||||||
|
|
||||||
|
entityWithJoins
|
||||||
|
: fromRoot (join | crossJoin | jpaCollectionJoin)*
|
||||||
|
|
||||||
|
fromRoot
|
||||||
|
: entityName variable?
|
||||||
|
| "LATERAL"? "(" subquery ")" variable?
|
||||||
|
|
||||||
|
join
|
||||||
|
: joinType "JOIN" "FETCH"? joinTarget joinRestriction?
|
||||||
|
|
||||||
|
joinTarget
|
||||||
|
: path variable?
|
||||||
|
| "LATERAL"? "(" subquery ")" variable?
|
||||||
|
|
||||||
|
withClause
|
||||||
|
: "WITH" cte ("," cte)*
|
||||||
|
;
|
|
@ -0,0 +1,11 @@
|
||||||
|
updateStatement
|
||||||
|
: "UPDATE" "VERSIONED"? targetEntity setClause whereClause?
|
||||||
|
|
||||||
|
targetEntity
|
||||||
|
: entityName variable?
|
||||||
|
|
||||||
|
setClause
|
||||||
|
: "SET" assignment ("," assignment)*
|
||||||
|
|
||||||
|
assignment
|
||||||
|
: simplePath "=" expression
|
Loading…
Reference in New Issue