HHH-4933 move to jHighlighting
git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@18940 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
parent
5bd9ffa511
commit
9be297241d
|
@ -122,7 +122,7 @@
|
|||
<literal>ddl</literal> together by setting the property to
|
||||
<literal>callback, dll</literal></para>
|
||||
|
||||
<programlisting role="XML" language="XML"><persistence ...>
|
||||
<programlisting language="XML" role="XML"><persistence ...>
|
||||
<persistence-unit ...>
|
||||
...
|
||||
<properties>
|
||||
|
@ -171,7 +171,7 @@
|
|||
<example>
|
||||
<title>Using custom groups for validation</title>
|
||||
|
||||
<programlisting role="XML" language="XML"><persistence ...>
|
||||
<programlisting language="XML" role="XML"><persistence ...>
|
||||
<persistence-unit ...>
|
||||
...
|
||||
<properties>
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
<para>Every persistent POJO class is an entity and is declared using the
|
||||
<literal>@Entity</literal> annotation (at the class level):</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Flight implements Serializable {
|
||||
Long id;
|
||||
|
||||
|
@ -102,7 +102,7 @@ public class Flight implements Serializable {
|
|||
mapping. If no <literal>@Table</literal> is defined the default values
|
||||
are used: the unqualified class name of the entity.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Table(name="tbl_sky")
|
||||
public class Sky implements Serializable {
|
||||
...
|
||||
|
@ -117,7 +117,7 @@ public class Sky implements Serializable {
|
|||
<code>@Column.unique</code> approach (refer to
|
||||
<literal>@Column</literal> for more information).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Table(name="tbl_sky",
|
||||
<programlisting language="JAVA" role="JAVA">@Table(name="tbl_sky",
|
||||
uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}
|
||||
)</programlisting>
|
||||
|
||||
|
@ -142,7 +142,7 @@ public class Sky implements Serializable {
|
|||
<para>You can add optimistic locking capability to an entity using the
|
||||
<literal>@Version</literal> annotation:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Flight implements Serializable {
|
||||
...
|
||||
@Version
|
||||
|
@ -182,7 +182,7 @@ public class Flight implements Serializable {
|
|||
annotation allows you to declare the fetching strategy for a
|
||||
property:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">public transient int counter; //transient property
|
||||
<programlisting language="JAVA" role="JAVA">public transient int counter; //transient property
|
||||
|
||||
private String firstname; //persistent property
|
||||
|
||||
|
@ -252,7 +252,7 @@ Starred getNote() { ... } //enum persisted as String in database</programlisting
|
|||
<classname>byte[] </classname>and serializable type will be persisted
|
||||
in a Blob.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">
|
||||
<programlisting language="JAVA" role="JAVA">
|
||||
@Lob
|
||||
public String getFullText() {
|
||||
return fullText;
|
||||
|
@ -313,7 +313,7 @@ public byte[] getFullCode() {
|
|||
<para>To force the access type on a given class, use the
|
||||
<classname>@Access</classname> annotation as showed below:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Order {
|
||||
@Id private Long id;
|
||||
public Long getId() { return id; }
|
||||
|
@ -348,7 +348,7 @@ public class Address {
|
|||
<para>You can also override the access type of a single property while
|
||||
keeping the other properties standard.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Order {
|
||||
@Id private Long id;
|
||||
public Long getId() { return id; }
|
||||
|
@ -408,7 +408,7 @@ public class Order {
|
|||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">
|
||||
<programlisting language="JAVA" role="JAVA">
|
||||
@Entity
|
||||
public class Flight implements Serializable {
|
||||
...
|
||||
|
@ -448,7 +448,7 @@ public String getName() { ... }
|
|||
<area coords="11 55" id="hm10" />
|
||||
</areaspec>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Column(
|
||||
<programlisting language="JAVA" role="JAVA">@Column(
|
||||
name="columnName";
|
||||
boolean unique() default false;
|
||||
boolean nullable() default true;
|
||||
|
@ -528,7 +528,7 @@ public String getName() { ... }
|
|||
<literal>@Embedded</literal> and <literal>@AttributeOverride</literal>
|
||||
annotation in the associated property:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Person implements Serializable {
|
||||
|
||||
// Persistent component using defaults
|
||||
|
@ -543,13 +543,13 @@ public class Person implements Serializable {
|
|||
...
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Embeddable
|
||||
<programlisting language="JAVA" role="JAVA">@Embeddable
|
||||
public class Address implements Serializable {
|
||||
String city;
|
||||
Country nationality; //no overriding here
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Embeddable
|
||||
<programlisting language="JAVA" role="JAVA">@Embeddable
|
||||
public class Country implements Serializable {
|
||||
private String iso2;
|
||||
@Column(name="countryName") private String name;
|
||||
|
@ -582,19 +582,20 @@ public class Country implements Serializable {
|
|||
columns of embedded objects of embedded objects is through dotted
|
||||
expressions.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @Embedded
|
||||
<programlisting language="JAVA" role="JAVA"> @Embedded
|
||||
@AttributeOverrides( {
|
||||
@AttributeOverride(name="city", column = @Column(name="fld_city") ),
|
||||
@AttributeOverride(name="nationality.iso2", column = @Column(name="nat_Iso2") ),
|
||||
@AttributeOverride(name="nationality.name", column = @Column(name="nat_CountryName") )
|
||||
//nationality columns in homeAddress are overridden
|
||||
} )
|
||||
Address homeAddress;</programlisting><para>Hibernate Annotations supports
|
||||
something that is not explicitly supported by the JPA specification.
|
||||
You can annotate a embedded object with the
|
||||
<literal>@MappedSuperclass</literal> annotation to make the superclass
|
||||
properties persistent (see <literal>@MappedSuperclass</literal> for
|
||||
more informations).</para>
|
||||
Address homeAddress;</programlisting>
|
||||
|
||||
<para>Hibernate Annotations supports something that is not explicitly
|
||||
supported by the JPA specification. You can annotate a embedded object
|
||||
with the <literal>@MappedSuperclass</literal> annotation to make the
|
||||
superclass properties persistent (see
|
||||
<literal>@MappedSuperclass</literal> for more informations).</para>
|
||||
|
||||
<para>You can also use association annotations in an embeddable object
|
||||
(ie <literal>@OneToOne</literal>, <classname>@ManyToOne</classname>,
|
||||
|
@ -691,12 +692,12 @@ public class Country implements Serializable {
|
|||
<para>The following example shows a sequence generator using the
|
||||
SEQ_STORE configuration (see below)</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STORE")
|
||||
<programlisting language="JAVA" role="JAVA">@Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_STORE")
|
||||
public Integer getId() { ... } </programlisting>
|
||||
|
||||
<para>The next example uses the identity generator:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
<programlisting language="JAVA" role="JAVA">@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
|
||||
public Long getId() { ... } </programlisting>
|
||||
|
||||
<para>The <literal>AUTO</literal> generator is the preferred type for
|
||||
|
@ -711,7 +712,7 @@ public Long getId() { ... } </programlisting>
|
|||
Application level generators are defined at XML level (see <xref
|
||||
linkend="xml-overriding" />):</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"><table-generator name="EMP_GEN"
|
||||
<programlisting language="JAVA" role="JAVA"><table-generator name="EMP_GEN"
|
||||
table="GENERATOR_TABLE"
|
||||
pk-column-name="key"
|
||||
value-column-name="hi"
|
||||
|
@ -782,7 +783,7 @@ public Long getId() { ... } </programlisting>
|
|||
<para>The next example shows the definition of a sequence generator in
|
||||
a class scope:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@javax.persistence.SequenceGenerator(
|
||||
name="SEQ_STORE",
|
||||
sequenceName="my_sequence"
|
||||
|
@ -805,7 +806,7 @@ public class Store implements Serializable {
|
|||
foreign generator but the JPA mapping reads better and is
|
||||
encouraged.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class MedicalHistory implements Serializable {
|
||||
@Id @OneToOne
|
||||
@JoinColumn(name = "person_id")
|
||||
|
@ -819,7 +820,7 @@ public class Person implements Serializable {
|
|||
|
||||
<para>Or alternatively</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class MedicalHistory implements Serializable {
|
||||
@Id Integer id;
|
||||
|
||||
|
@ -891,7 +892,7 @@ class Person {
|
|||
<para>Here is a simple example of
|
||||
<classname>@EmbeddedId</classname>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class User {
|
||||
@EmbeddedId
|
||||
@AttributeOverride(name="firstName", column=@Column(name="fld_firstname")
|
||||
|
@ -913,7 +914,7 @@ class UserId implements Serializable {
|
|||
<para>An embedded id can itself contains the primary key of an
|
||||
associated entity.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class Customer {
|
||||
@EmbeddedId CustomerId id;
|
||||
boolean preferredCustomer;
|
||||
|
@ -969,7 +970,7 @@ class UserId implements Serializable {
|
|||
association directly in the embedded id component (instead of having
|
||||
to use the <classname>@MapsId</classname> annotation).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class Customer {
|
||||
@EmbeddedId CustomerId id;
|
||||
boolean preferredCustomer;
|
||||
|
@ -1007,7 +1008,7 @@ class UserId implements Serializable {
|
|||
approach is only supported by Hibernate but does not require an
|
||||
extra embeddable component.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class Customer implements Serializable {
|
||||
@Id @OneToOne
|
||||
@JoinColumns({
|
||||
|
@ -1055,7 +1056,7 @@ class UserId implements Serializable {
|
|||
and Hibernate supports it.</para>
|
||||
</warning>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class Customer {
|
||||
@Id @OneToOne
|
||||
@JoinColumns({
|
||||
|
@ -1095,7 +1096,7 @@ class UserId implements Serializable {
|
|||
vanilla associated property in the
|
||||
<classname>@IdClass</classname>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
class Customer {
|
||||
@Id @OneToOne
|
||||
@JoinColumns({
|
||||
|
@ -1141,7 +1142,7 @@ class UserId implements Serializable {
|
|||
this feature.</para>
|
||||
</warning>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class CustomerInventory implements Serializable {
|
||||
@Id
|
||||
@TableGenerator(name = "inventory",
|
||||
|
@ -1210,7 +1211,7 @@ public class Customer implements Serializable {
|
|||
UNION</literal> queries. It is commonly used for the top level of an
|
||||
inheritance hierarchy:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
|
||||
public class Flight implements Serializable { ... } </programlisting>
|
||||
|
||||
|
@ -1229,7 +1230,7 @@ public class Flight implements Serializable { ... } </programlisting>
|
|||
same table, instances are distinguished by a special discriminator
|
||||
column:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
|
||||
@DiscriminatorColumn(
|
||||
name="planetype",
|
||||
|
@ -1269,7 +1270,7 @@ public class A320 extends Plane { ... } </programlisting>
|
|||
<literal>@PrimaryKeyJoinColumns</literal> annotations define the
|
||||
primary key(s) of the joined subclass table:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Inheritance(strategy=InheritanceType.JOINED)
|
||||
public class Boat implements Serializable { ... }
|
||||
|
||||
|
@ -1296,7 +1297,7 @@ public class AmericaCupClass extends Boat { ... } </programlisting>
|
|||
mapped entity (ie no specific table for this entity). For that purpose
|
||||
you can map them as <literal>@MappedSuperclass</literal>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@MappedSuperclass
|
||||
<programlisting language="JAVA" role="JAVA">@MappedSuperclass
|
||||
public class BaseEntity {
|
||||
@Basic
|
||||
@Temporal(TemporalType.TIMESTAMP)
|
||||
|
@ -1351,7 +1352,7 @@ public class BaseEntity {
|
|||
root entity level using the <literal>@AttributeOverride</literal>
|
||||
annotation.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@MappedSuperclass
|
||||
<programlisting language="JAVA" role="JAVA">@MappedSuperclass
|
||||
public class FlyingObject implements Serializable {
|
||||
|
||||
public int getAltitude() {
|
||||
|
@ -1412,7 +1413,7 @@ public class Plane extends FlyingObject {
|
|||
<para>First, we map a real one-to-one association using shared primary
|
||||
keys:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Body {
|
||||
@Id
|
||||
public Long getId() { return id; }
|
||||
|
@ -1425,7 +1426,7 @@ public class Body {
|
|||
...
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Heart {
|
||||
@Id
|
||||
public Long getId() { ...}
|
||||
|
@ -1438,7 +1439,7 @@ public class Heart {
|
|||
<para>In the following example, the associated entities are linked
|
||||
through an explicit foreign key column:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer implements Serializable {
|
||||
@OneToOne(cascade = CascadeType.ALL)
|
||||
@JoinColumn(name="passport_fk")
|
||||
|
@ -1492,7 +1493,7 @@ public class Passport implements Serializable {
|
|||
<para>The third possibility (using an association table) is quite
|
||||
exotic.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer implements Serializable {
|
||||
@OneToOne(cascade = CascadeType.ALL)
|
||||
@JoinTable(name = "CustomerPassports",
|
||||
|
@ -1530,7 +1531,7 @@ public class Passport implements Serializable {
|
|||
<para>Many-to-one associations are declared at the property level with
|
||||
the annotation <literal>@ManyToOne</literal>:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity()
|
||||
<programlisting language="JAVA" role="JAVA">@Entity()
|
||||
public class Flight implements Serializable {
|
||||
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
|
||||
@JoinColumn(name="COMP_ID")
|
||||
|
@ -1555,7 +1556,7 @@ public class Flight implements Serializable {
|
|||
almost all cases. However this is useful when you want to use
|
||||
interfaces as the return type instead of the regular entity.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Flight implements Serializable {
|
||||
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE}, targetEntity=CompanyImpl.class )
|
||||
@JoinColumn(name="COMP_ID")
|
||||
|
@ -1577,7 +1578,7 @@ public interface Company {
|
|||
referencing the target entity table (through
|
||||
<literal>@JoinTable.inverseJoinColumns</literal>).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Flight implements Serializable {
|
||||
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
|
||||
@JoinTable(name="Flight_Company",
|
||||
|
@ -1619,7 +1620,7 @@ public class Flight implements Serializable {
|
|||
association is annotated by
|
||||
<literal>@OneToMany(mappedBy=...)</literal></para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Troop {
|
||||
@OneToMany(mappedBy="troop")
|
||||
public Set<Soldier> getSoldiers() {
|
||||
|
@ -1647,7 +1648,7 @@ public class Soldier {
|
|||
false. This solution is not optimized and will produce some
|
||||
additional UPDATE statements.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Troop {
|
||||
@OneToMany
|
||||
@JoinColumn(name="troop_fk") //we need to duplicate the physical information
|
||||
|
@ -1674,7 +1675,7 @@ public class Soldier {
|
|||
association is described through a
|
||||
<literal>@JoinColumn</literal></para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer implements Serializable {
|
||||
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="CUST_ID")
|
||||
|
@ -1699,7 +1700,7 @@ public class Ticket implements Serializable {
|
|||
preferred. This association is described through an
|
||||
<literal>@JoinTable</literal>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Trainer {
|
||||
@OneToMany
|
||||
@JoinTable(
|
||||
|
@ -1740,7 +1741,7 @@ public class Monkey {
|
|||
added to the foreign key referencing the other side table to
|
||||
reflect the one to many.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Trainer {
|
||||
@OneToMany
|
||||
public Set<Tiger> getTrainedTigers() {
|
||||
|
@ -1776,7 +1777,7 @@ public class Tiger {
|
|||
the inverse end (ie. it will be ignored when updating the
|
||||
relationship values in the association table):</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Employer implements Serializable {
|
||||
@ManyToMany(
|
||||
targetEntity=org.hibernate.test.metadata.manytomany.Employee.class,
|
||||
|
@ -1793,7 +1794,7 @@ public class Employer implements Serializable {
|
|||
...
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Employee implements Serializable {
|
||||
@ManyToMany(
|
||||
cascade = {CascadeType.PERSIST, CascadeType.MERGE},
|
||||
|
@ -1835,7 +1836,7 @@ public class Employee implements Serializable {
|
|||
and the other side primary key column(s). These are the same rules
|
||||
used for a unidirectional one to many relationship.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">
|
||||
<programlisting language="JAVA" role="JAVA">
|
||||
@Entity
|
||||
public class Store {
|
||||
@ManyToMany(cascade = CascadeType.PERSIST)
|
||||
|
@ -1867,7 +1868,7 @@ public class City {
|
|||
the other side primary key column(s). These are the same rules
|
||||
used for a unidirectional one to many relationship.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Store {
|
||||
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
|
||||
public Set<Customer> getCustomers() {
|
||||
|
@ -1899,7 +1900,7 @@ public class Customer {
|
|||
objects. Use the <classname>@ElementCollection</classname> in this
|
||||
case.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class User {
|
||||
[...]
|
||||
public String getLastname() { ...}
|
||||
|
@ -1927,7 +1928,7 @@ public class User {
|
|||
embeddable object in the collection table, use the
|
||||
<classname>@AttributeOverride</classname> annotation.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class User {
|
||||
[...]
|
||||
public String getLastname() { ...}
|
||||
|
@ -1956,7 +1957,7 @@ public class Address {
|
|||
<literal>key.</literal> prefix to override properties of the
|
||||
embeddable object used in the map key.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class User {
|
||||
@ElementCollection
|
||||
@AttributeOverrides({
|
||||
|
@ -1999,7 +2000,7 @@ public class User {
|
|||
collection will be ordered by the primary key of the target
|
||||
entity.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer {
|
||||
@Id @GeneratedValue public Integer getId() { return id; }
|
||||
public void setId(Integer id) { this.id = id; }
|
||||
|
@ -2047,7 +2048,7 @@ public class Order {
|
|||
<literal>ORDER</literal> (in the following example, it would be
|
||||
<literal>orders_ORDER</literal>).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer {
|
||||
@Id @GeneratedValue public Integer getId() { return id; }
|
||||
public void setId(Integer id) { this.id = id; }
|
||||
|
@ -2112,7 +2113,7 @@ public class Order {
|
|||
other words, if you change the property value, the key will not
|
||||
change automatically in your Java model.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer {
|
||||
@Id @GeneratedValue public Integer getId() { return id; }
|
||||
public void setId(Integer id) { this.id = id; }
|
||||
|
@ -2187,7 +2188,7 @@ public class Order {
|
|||
should wonder why at this day and age you don't use
|
||||
generics).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Customer {
|
||||
@Id @GeneratedValue public Integer getId() { return id; }
|
||||
public void setId(Integer id) { this.id = id; }
|
||||
|
@ -2375,7 +2376,7 @@ public class Order {
|
|||
to true. In a way, it means that the associated entity's lifecycle is
|
||||
bound to the owning entity just like an embeddable object is.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity class Customer {
|
||||
<programlisting language="JAVA" role="JAVA">@Entity class Customer {
|
||||
@OneToMany(orphanRemoval=true) public Set<Order> getOrders() { return orders; }
|
||||
public void setOrders(Set<Order> orders) { this.orders = orders; }
|
||||
private Set<Order> orders;
|
||||
|
@ -2428,7 +2429,7 @@ customer.getOrders().remove(order); //order will be deleted by cascade</programl
|
|||
You can also use <literal>@IdClass</literal>. These are more detailed in
|
||||
<xref linkend="entity-mapping-identifier" />.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class RegionalArticle implements Serializable {
|
||||
|
||||
@Id
|
||||
|
@ -2440,7 +2441,7 @@ public class RegionalArticlePk implements Serializable { ... } </programli
|
|||
|
||||
<para>or alternatively</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class RegionalArticle implements Serializable {
|
||||
|
||||
@EmbeddedId
|
||||
|
@ -2458,7 +2459,7 @@ public class RegionalArticlePk implements Serializable { ... } </program
|
|||
explicitly. Otherwise, Hibernate will suppose that you use the same
|
||||
order of columns as in the primary key declaration.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Parent implements Serializable {
|
||||
@Id
|
||||
public ParentPk id;
|
||||
|
@ -2474,7 +2475,7 @@ public class Parent implements Serializable {
|
|||
...
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Child implements Serializable {
|
||||
@Id @GeneratedValue
|
||||
public Integer id;
|
||||
|
@ -2488,7 +2489,7 @@ public class Child implements Serializable {
|
|||
public Parent parent; //unidirectional
|
||||
} </programlisting>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Embeddable
|
||||
<programlisting language="JAVA" role="JAVA">@Embeddable
|
||||
public class ParentPk implements Serializable {
|
||||
String firstName;
|
||||
String lastName;
|
||||
|
@ -2509,7 +2510,7 @@ public class ParentPk implements Serializable {
|
|||
parameter of <literal>@Column</literal> or
|
||||
<literal>@JoinColumn</literal>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Table(name="MainCat")
|
||||
@SecondaryTables({
|
||||
@SecondaryTable(name="Cat1", pkJoinColumns={
|
||||
|
@ -2623,7 +2624,7 @@ public class Cat implements Serializable {
|
|||
that.</para>
|
||||
</note>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity @Cacheable
|
||||
<programlisting language="JAVA" role="JAVA">@Entity @Cacheable
|
||||
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
|
||||
public class Forest { ... }</programlisting>
|
||||
|
||||
|
@ -2632,7 +2633,7 @@ public class Forest { ... }</programlisting>
|
|||
<classname>@Cache</classname> annotation on the collection
|
||||
property.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
|
||||
<programlisting language="JAVA" role="JAVA">@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="CUST_ID")
|
||||
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
|
||||
public SortedSet<Ticket> getTickets() {
|
||||
|
@ -2651,7 +2652,7 @@ public SortedSet<Ticket> getTickets() {
|
|||
<area coords="4 55" id="cache-hm3" />
|
||||
</areaspec>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Cache(
|
||||
<programlisting language="JAVA" role="JAVA">@Cache(
|
||||
CacheConcurrencyStrategy usage();
|
||||
String region() default "";
|
||||
String include() default "all";
|
||||
|
@ -2708,7 +2709,7 @@ public SortedSet<Ticket> getTickets() {
|
|||
manager factory scope. A named query is defined by its name and the
|
||||
actual query string.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"><entity-mappings>
|
||||
<programlisting language="JAVA" role="JAVA"><entity-mappings>
|
||||
<named-query name="plane.getAll">
|
||||
<query>select p from Plane p</query>
|
||||
</named-query>
|
||||
|
@ -2738,7 +2739,6 @@ public class MyDao {
|
|||
|
||||
<para>The available Hibernate hints are</para>
|
||||
|
||||
|
||||
<table>
|
||||
<title>Query hints</title>
|
||||
|
||||
|
@ -2837,7 +2837,7 @@ public class MyDao {
|
|||
definitions are optional provided that they map to the same column name
|
||||
as the one declared on the class property.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@NamedNativeQuery(name="night&area", query="select night.id nid, night.night_duration, "
|
||||
<programlisting language="JAVA" role="JAVA">@NamedNativeQuery(name="night&area", query="select night.id nid, night.night_duration, "
|
||||
+ " night.night_date, area.id aid, night.area_id, area.name "
|
||||
+ "from Night night, Area area where night.area_id = area.id",
|
||||
resultSetMapping="joinMapping")
|
||||
|
@ -2863,7 +2863,7 @@ public class MyDao {
|
|||
column name, actually the column name retrieved by the query. Let's now
|
||||
see an implicit declaration of the property / column.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@SqlResultSetMapping(name="implicit",
|
||||
entities=@EntityResult(entityClass=SpaceShip.class))
|
||||
@NamedNativeQuery(name="implicitSample",
|
||||
|
@ -2911,7 +2911,7 @@ public class SpaceShip {
|
|||
property name for the relationship, followed by a dot ("."), followed by
|
||||
the name or the field or property of the primary key.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@SqlResultSetMapping(name="compositekey",
|
||||
entities=@EntityResult(entityClass=SpaceShip.class,
|
||||
fields = {
|
||||
|
@ -3014,7 +3014,7 @@ public class Captain implements Serializable {
|
|||
mapping, you can use the <literal>resultClass</literal> attribute
|
||||
instead of <literal>resultSetMapping</literal>:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@NamedNativeQuery(name="implicitSample", query="select * from SpaceShip",
|
||||
<programlisting language="JAVA" role="JAVA">@NamedNativeQuery(name="implicitSample", query="select * from SpaceShip",
|
||||
resultClass=SpaceShip.class)
|
||||
public class SpaceShip {</programlisting>
|
||||
|
||||
|
@ -3025,7 +3025,7 @@ public class SpaceShip {</programlisting>
|
|||
and scalar returns in the same native query (this is probably not that
|
||||
common though).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@SqlResultSetMapping(name="scalar", columns=@ColumnResult(name="dimension"))
|
||||
<programlisting language="JAVA" role="JAVA">@SqlResultSetMapping(name="scalar", columns=@ColumnResult(name="dimension"))
|
||||
@NamedNativeQuery(name="scalar", query="select length*width as dimension from SpaceShip", resultSetMapping="scalar")</programlisting>
|
||||
|
||||
<para>An other query hint specific to native queries has been
|
||||
|
@ -3187,7 +3187,7 @@ public class SpaceShip {</programlisting>
|
|||
implements persistence via, for example, stored procedure calls,
|
||||
serialization to flat files or LDAP.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@BatchSize(size=5)
|
||||
@org.hibernate.annotations.Entity(
|
||||
selectBeforeUpdate = true,
|
||||
|
@ -3197,7 +3197,9 @@ public class SpaceShip {</programlisting>
|
|||
@Where(clause="1=1")
|
||||
@org.hibernate.annotations.Table(name="Forest", indexes = { @Index(name="idx", columnNames = { "name", "length" } ) } )
|
||||
@Persister(impl=MyEntityPersister.class)
|
||||
public class Forest { ... }</programlisting> <programlisting role="JAVA" language="JAVA">@Entity
|
||||
public class Forest { ... }</programlisting>
|
||||
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Inheritance(
|
||||
strategy=InheritanceType.JOINED
|
||||
)
|
||||
|
@ -3222,7 +3224,7 @@ public class Carrot extends Vegetable { ... }</programlisting>
|
|||
allows you to define an Hibernate specific id
|
||||
generator.</literal></para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Id @GeneratedValue(generator="system-uuid")
|
||||
<programlisting language="JAVA" role="JAVA">@Id @GeneratedValue(generator="system-uuid")
|
||||
@GenericGenerator(name="system-uuid", strategy = "uuid")
|
||||
public String getId() {
|
||||
|
||||
|
@ -3247,7 +3249,7 @@ public Integer getId() {</programlisting>
|
|||
annotations, making them application level generators (just like if
|
||||
they were in a JPA XML file).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@GenericGenerators(
|
||||
<programlisting language="JAVA" role="JAVA">@GenericGenerators(
|
||||
{
|
||||
@GenericGenerator(
|
||||
name="hibseq",
|
||||
|
@ -3275,7 +3277,7 @@ package org.hibernate.test.model</programlisting>
|
|||
composed of all the properties marked
|
||||
<classname>@NaturalId</classname>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Citizen {
|
||||
@Id
|
||||
@GeneratedValue
|
||||
|
@ -3317,7 +3319,7 @@ List results = s.createCriteria( Citizen.class )
|
|||
property into a column. This kind of property is read only (its value
|
||||
is calculated by your formula fragment).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Formula("obj_length * obj_height * obj_width")
|
||||
<programlisting language="JAVA" role="JAVA">@Formula("obj_length * obj_height * obj_width")
|
||||
public long getObjectVolume()</programlisting>
|
||||
|
||||
<para>The SQL fragment can be as complex as you want and even include
|
||||
|
@ -3353,7 +3355,7 @@ public long getObjectVolume()</programlisting>
|
|||
Place your annotations before the package declaration.</para>
|
||||
</note>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@TypeDef(
|
||||
<programlisting language="JAVA" role="JAVA">@TypeDef(
|
||||
name = "phoneNumber",
|
||||
defaultForType = PhoneNumber.class,
|
||||
typeClass = PhoneNumberType.class
|
||||
|
@ -3372,7 +3374,7 @@ public class ContactDetails {
|
|||
<literal>parameters</literal> attribute to customize the
|
||||
TypeDef.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">//in org/hibernate/test/annotations/entity/package-info.java
|
||||
<programlisting language="JAVA" role="JAVA">//in org/hibernate/test/annotations/entity/package-info.java
|
||||
@TypeDefs(
|
||||
{
|
||||
@TypeDef(
|
||||
|
@ -3397,7 +3399,7 @@ public class Forest {
|
|||
definitions. The <literal>@Columns</literal> has been introduced for
|
||||
that purpose.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")
|
||||
<programlisting language="JAVA" role="JAVA">@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")
|
||||
@Columns(columns = {
|
||||
@Column(name="r_amount"),
|
||||
@Column(name="r_currency")
|
||||
|
@ -3421,7 +3423,7 @@ public class MonetaryAmount implements Serializable {
|
|||
<literal>@Index</literal> annotation on a one column property, the
|
||||
columnNames attribute will then be ignored</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Column(secondaryTable="Cat1")
|
||||
<programlisting language="JAVA" role="JAVA">@Column(secondaryTable="Cat1")
|
||||
@Index(name="story1index")
|
||||
public String getStoryPart1() {
|
||||
return storyPart1;
|
||||
|
@ -3434,7 +3436,7 @@ public String getStoryPart1() {
|
|||
<para>When inside an embeddable object, you can define one of the
|
||||
properties as a pointer back to the owner element.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Person {
|
||||
@Embeddable public Address address;
|
||||
...
|
||||
|
@ -3457,7 +3459,7 @@ person == person.address.owner</programlisting>
|
|||
database. Hibernate can deal with such properties and triggers a
|
||||
subsequent select to read these properties.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Antenna {
|
||||
@Id public Integer id;
|
||||
@Generated(GenerationTime.ALWAYS)
|
||||
|
@ -3491,7 +3493,7 @@ public class Antenna {
|
|||
<literal>targetEntity</literal> attribute available on
|
||||
associations.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @Embedded
|
||||
<programlisting language="JAVA" role="JAVA"> @Embedded
|
||||
@Target(OwnerImpl.class)
|
||||
public Owner getOwner() {
|
||||
return owner;
|
||||
|
@ -3523,7 +3525,7 @@ public class Antenna {
|
|||
formula for discriminator resolution (no need to have a dedicated
|
||||
column).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@DiscriminatorFormula("case when forest_type is null then 0 else forest_type end")
|
||||
public class Forest { ... }</programlisting>
|
||||
|
||||
|
@ -3538,7 +3540,7 @@ public class Forest { ... }</programlisting>
|
|||
<para>You can define the foreign key name generated by Hibernate for
|
||||
subclass tables in the JOINED inheritance strategy.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Inheritance(strategy = InheritanceType.JOINED)
|
||||
public abstract class File { ... }
|
||||
|
||||
|
@ -3564,7 +3566,7 @@ public class Document extends File {</programlisting>
|
|||
<literal>@ManyToOne</literal>, <literal>@OneToMany</literal> or
|
||||
<literal>@ManyToMany</literal> association.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Child {
|
||||
...
|
||||
@ManyToOne
|
||||
|
@ -3576,7 +3578,7 @@ public class Child {
|
|||
<para>Sometimes you want to delegate to your database the deletion of
|
||||
cascade when a given entity is deleted.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Child {
|
||||
...
|
||||
@ManyToOne
|
||||
|
@ -3592,7 +3594,7 @@ public class Child {
|
|||
fairly unreadable name. You can override the constraint name by use
|
||||
<literal>@ForeignKey</literal>.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Child {
|
||||
...
|
||||
@ManyToOne
|
||||
|
@ -3722,7 +3724,7 @@ alter table Child add constraint FK_PARENT foreign key (parent_id) references Pa
|
|||
<classname>@AnyDef</classname> and <classname>@AnyDefs</classname>
|
||||
annotations are used.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @Any( metaColumn = @Column( name = "property_type" ), fetch=FetchType.EAGER )
|
||||
<programlisting language="JAVA" role="JAVA"> @Any( metaColumn = @Column( name = "property_type" ), fetch=FetchType.EAGER )
|
||||
@AnyMetaDef(
|
||||
idType = "integer",
|
||||
metaType = "string",
|
||||
|
@ -3743,7 +3745,7 @@ alter table Child add constraint FK_PARENT foreign key (parent_id) references Pa
|
|||
reused. It is recommended to place it as a package metadata in this
|
||||
case.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">//on a package
|
||||
<programlisting language="JAVA" role="JAVA">//on a package
|
||||
@AnyMetaDef( name="property"
|
||||
idType = "integer",
|
||||
metaType = "string",
|
||||
|
@ -3816,7 +3818,7 @@ package org.hibernate.test.annotations.any;
|
|||
<classname>SortedSet</classname> or a <classname>SortedMap</classname>
|
||||
interface.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
|
||||
<programlisting language="JAVA" role="JAVA"> @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="CUST_ID")
|
||||
@Sort(type = SortType.COMPARATOR, comparator = TicketComparator.class)
|
||||
@Where(clause="1=1")
|
||||
|
@ -3835,7 +3837,7 @@ package org.hibernate.test.annotations.any;
|
|||
<literal>inverseName</literal> referencing to the other side
|
||||
constraint.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Woman {
|
||||
...
|
||||
@ManyToMany(cascade = {CascadeType.ALL})
|
||||
|
@ -3861,7 +3863,7 @@ alter table Man_Woman add constraint TO_MAN_FK foreign key (man_id) references M
|
|||
associated class explicitly maps the indexed value, the use of
|
||||
<methodname>mappedBy</methodname> is permitted:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Parent {
|
||||
@OneToMany(mappedBy="parent")
|
||||
@OrderColumn(name="order")
|
||||
|
@ -3889,7 +3891,7 @@ public class Child {
|
|||
the collection as <literal>mappedBy</literal>. Instead, we could use
|
||||
the following mapping:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
public class Parent {
|
||||
@OneToMany
|
||||
@OrderColumn(name="order")
|
||||
|
@ -3925,7 +3927,7 @@ public class Child {
|
|||
generator strategy. The strategy can be <literal>identity</literal>,
|
||||
or any defined generator name of your application.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@TableGenerator(name="ids_generator", table="IDS")
|
||||
public class Passport {
|
||||
...
|
||||
|
@ -3955,7 +3957,7 @@ public class Passport {
|
|||
only in very special cases (eg. audit logs, user session data,
|
||||
etc).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @ManyToAny(
|
||||
<programlisting language="JAVA" role="JAVA"> @ManyToAny(
|
||||
metaColumn = @Column( name = "property_type" ) )
|
||||
@AnyMetaDef(
|
||||
idType = "integer",
|
||||
|
@ -4033,7 +4035,7 @@ public class Passport {
|
|||
<literal>PERSIST</literal> at flush time as per the
|
||||
specification).</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
|
||||
<programlisting language="JAVA" role="JAVA">@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
|
||||
@Cascade(org.hibernate.annotations.CascadeType.REPLICATE)
|
||||
public Collection<Employer> getEmployers()</programlisting>
|
||||
|
||||
|
@ -4065,7 +4067,7 @@ public Collection<Employer> getEmployers()</programlisting>
|
|||
entity load or the collection load. <literal>@Filter</literal> is used
|
||||
and placed either on the entity or the collection element</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@FilterDef(name="minLength", parameters=@ParamDef( name="minLength", type="integer" ) )
|
||||
@Filters( {
|
||||
@Filter(name="betweenLength", condition=":minLength <= length and :maxLength >= length"),
|
||||
|
@ -4081,7 +4083,7 @@ public class Forest { ... }</programlisting>
|
|||
association table, use the <literal>@FilterJoinTable</literal>
|
||||
annotation.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA"> @OneToMany
|
||||
<programlisting language="JAVA" role="JAVA"> @OneToMany
|
||||
@JoinTable
|
||||
//filter on the target entity table
|
||||
@Filter(name="betweenLength", condition=":minLength <= length and :maxLength >= length")
|
||||
|
@ -4159,7 +4161,7 @@ public class Forest { ... }</programlisting>
|
|||
you can also override the SQL statement used to load or change the state
|
||||
of entities.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Table(name="CHAOS")
|
||||
@SQLInsert( sql="INSERT INTO CHAOS(size, name, nickname, id) VALUES(?,upper(?),?,?)")
|
||||
@SQLUpdate( sql="UPDATE CHAOS SET size = ?, name = upper(?), nickname = ? WHERE id = ?")
|
||||
|
@ -4214,7 +4216,7 @@ public class Chaos {
|
|||
<para>You can use the exact same set of annotations to override the
|
||||
collection related statements.</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@OneToMany
|
||||
<programlisting language="JAVA" role="JAVA">@OneToMany
|
||||
@JoinColumn(name="chaos_fk")
|
||||
@SQLInsert( sql="UPDATE CASIMIR_PARTICULE SET chaos_fk = ? where id = ?")
|
||||
@SQLDelete( sql="UPDATE CASIMIR_PARTICULE SET chaos_fk = null where id = ?")
|
||||
|
@ -4234,7 +4236,7 @@ private Set<CasimirParticle> particles = new HashSet<CasimirParticle>
|
|||
all) attributes <literal>sqlInsert</literal>,
|
||||
<literal>sqlUpdate</literal>, <literal>sqlDelete</literal>:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@SecondaryTables({
|
||||
@SecondaryTable(name = "`Cat nbr1`"),
|
||||
@SecondaryTable(name = "Cat2"})
|
||||
|
@ -4274,7 +4276,7 @@ public class Cat implements Serializable {</programlisting>
|
|||
<para>To define tuplixer in annotations, simply use the
|
||||
<literal>@Tuplizer</literal> annotation on the according element</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@Tuplizer(impl = DynamicEntityTuplizer.class)
|
||||
public interface Cuisine {
|
||||
@Id
|
||||
|
@ -4304,7 +4306,7 @@ public interface Cuisine {
|
|||
fetch profile will be in affect for that session until it is explicitly
|
||||
disabled. Lets look at an example:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">@Entity
|
||||
<programlisting language="JAVA" role="JAVA">@Entity
|
||||
@FetchProfile(name = "customer-with-orders", fetchOverrides = {
|
||||
@FetchProfile.FetchOverride(entity = Customer.class, association = "orders", mode = FetchMode.JOIN)
|
||||
})
|
||||
|
@ -4323,12 +4325,13 @@ public class Customer {
|
|||
// standard getter/setter
|
||||
...
|
||||
}</programlisting>
|
||||
<para>In the normal case the orders association would be lazy
|
||||
loaded by Hibernate, but in a usecase where it is more efficient to load
|
||||
the customer and their orders together you could do something like
|
||||
|
||||
<para>In the normal case the orders association would be lazy loaded by
|
||||
Hibernate, but in a usecase where it is more efficient to load the
|
||||
customer and their orders together you could do something like
|
||||
this:</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">Session session = ...;
|
||||
<programlisting language="JAVA" role="JAVA">Session session = ...;
|
||||
session.enableFetchProfile( "customer-with-orders" ); // name matches @FetchProfile name
|
||||
Customer customer = (Customer) session.get( Customer.class, customerId );
|
||||
session.disableFetchProfile( "customer-with-orders" ); // or just close the session
|
||||
|
@ -4350,4 +4353,4 @@ session.disableFetchProfile( "customer-with-orders" ); // or just close the sess
|
|||
Hibernate Core documentation.</para>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
</chapter>
|
|
@ -46,7 +46,7 @@
|
|||
<para>Alternatively add the following dependency in your dependency
|
||||
manager (like Maven or Ivy). Here is an example</para>
|
||||
|
||||
<programlisting role="XML" language="XML"><project ...>
|
||||
<programlisting language="XML" role="XML"><project ...>
|
||||
...
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -96,9 +96,9 @@
|
|||
or above from the Hibernate website and add
|
||||
<filename>hibernate-validator.jar</filename> and
|
||||
<filename>validation-api.jar</filename> in your classpath. Alternatively
|
||||
add the following dependency in your
|
||||
<filename>pom.xml</filename>.</para>
|
||||
<programlisting role="XML" language="XML"><project>
|
||||
add the following dependency in your <filename>pom.xml</filename>.</para>
|
||||
|
||||
<programlisting language="XML" role="XML"><project>
|
||||
...
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -117,7 +117,9 @@
|
|||
<filename>hibernate-search.jar</filename> and
|
||||
<filename>lucene-core-x.y.z.jar</filename> in your classpath.
|
||||
Alternatively add the following dependency in your
|
||||
<filename>pom.xml</filename>.</para><programlisting role="XML" language="XML"><project>
|
||||
<filename>pom.xml</filename>.</para>
|
||||
|
||||
<programlisting language="XML" role="XML"><project>
|
||||
...
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -138,7 +140,8 @@
|
|||
<classname>AnnotationConfiguration</classname> class instead of the
|
||||
<classname>Configuration</classname> class. Here is an example using the
|
||||
(legacy) <classname>HibernateUtil</classname> approach:</para>
|
||||
<programlisting role="JAVA" language="JAVA">package hello;
|
||||
|
||||
<programlisting language="JAVA" role="JAVA">package hello;
|
||||
|
||||
import org.hibernate.*;
|
||||
import org.hibernate.cfg.*;
|
||||
|
@ -171,7 +174,7 @@ private static final SessionFactory sessionFactory;
|
|||
<filename>hibernate.cfg.xml</filename>). Here is the equivalent of the
|
||||
above declaration:</para>
|
||||
|
||||
<programlisting role="XML" language="XML"><!DOCTYPE hibernate-configuration PUBLIC
|
||||
<programlisting language="XML" role="XML"><!DOCTYPE hibernate-configuration PUBLIC
|
||||
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
|
||||
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
|
||||
<hibernate-configuration>
|
||||
|
@ -194,7 +197,8 @@ private static final SessionFactory sessionFactory;
|
|||
<para>Alternatively, you can define the annotated classes and packages
|
||||
using the programmatic API</para>
|
||||
|
||||
<programlisting role="JAVA" language="JAVA">sessionFactory = new <emphasis role="bold">AnnotationConfiguration()
|
||||
<programlisting language="JAVA" role="JAVA">sessionFactory = new <emphasis
|
||||
role="bold">AnnotationConfiguration()
|
||||
.addPackage("test.animals") //the fully qualified package name
|
||||
.addAnnotatedClass(Flight.class)
|
||||
.addAnnotatedClass(Sky.class)
|
||||
|
@ -321,4 +325,4 @@ private static final SessionFactory sessionFactory;
|
|||
url="http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#configuration-logging">Logging</ulink>
|
||||
in the Hibernate Core documentation.</para>
|
||||
</section>
|
||||
</chapter>
|
||||
</chapter>
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version='1.0' encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
~ Hibernate, Relational Persistence for Idiomatic Java
|
||||
~
|
||||
|
@ -22,8 +22,8 @@
|
|||
~ 51 Franklin Street, Fifth Floor
|
||||
~ Boston, MA 02110-1301 USA
|
||||
-->
|
||||
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
||||
<chapter id="xml-overriding">
|
||||
<title>Overriding metadata through XML</title>
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
|||
the annotations one. So if you know the annotations structure, using the
|
||||
XML schema will be straightforward for you.</para>
|
||||
|
||||
<para>You can define one ot more XML files describing your metadata, these
|
||||
<para>You can define one or more XML files describing your metadata, these
|
||||
files will be merged by the overriding engine.</para>
|
||||
|
||||
<section>
|
||||
|
@ -53,7 +53,7 @@
|
|||
<para>You can define global level metadata available for all XML files.
|
||||
You must not define these metadata more than once per deployment.</para>
|
||||
|
||||
<programlisting role="XML" language="XML"><?xml version="1.0" encoding="UTF-8"?>
|
||||
<programlisting language="XML" role="XML"><?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<entity-mappings
|
||||
xmlns="http://java.sun.com/xml/ns/persistence/orm"
|
||||
|
@ -347,7 +347,7 @@
|
|||
<literal>mapped-superclass/attributes</literal> or
|
||||
<literal>embeddable/attributes</literal>.</para>
|
||||
|
||||
<programlisting role="XML" language="XML"> <attributes>
|
||||
<programlisting language="XML" role="XML"> <attributes>
|
||||
<id name="id">
|
||||
<column name="fld_id"/>
|
||||
<generated-value generator="generator" strategy="SEQUENCE"/>
|
||||
|
@ -388,7 +388,7 @@
|
|||
<literal>mapped-superclass/attributes</literal> or
|
||||
<literal>embeddable/attributes</literal>.</para>
|
||||
|
||||
<programlisting role="XML" language="XML"> <attributes>
|
||||
<programlisting language="XML" role="XML"> <attributes>
|
||||
<one-to-many name="players" fetch="EAGER">
|
||||
<map-key name="name"/>
|
||||
<join-column name="driver"/>
|
||||
|
@ -424,4 +424,4 @@
|
|||
informations in the chapter describing annotations.</para>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
</chapter>
|
Loading…
Reference in New Issue