Java Reference
In-Depth Information
Listing 6-24. The Root of the Inheritance Hierarchy Mapped with the JOINED Strategy
@Entity
@Inheritance(strategy = JOINED)
@DiscriminatorColumn(
name="DISCRIMINATOR"
)
public class Book {
...
}
Finally, there is the table-per-class approach, in which all of the fields of each type in the
inheritance hierarchy are stored in distinct tables. Because of the close correspondence between
the entity and its table, the @DiscriminatorColumn annotation is not applicable to this inheri-
tance strategy. Listing 6-25 shows how our Book class could be mapped in this way.
Listing 6-25. The Root of the Inheritance Hierarchy Mapped with the TABLE_PER_CLASS Strategy
@Entity
@Inheritance(strategy = TABLE_PER_CLASS)
public class Book {
...
}
Other EJB 3 Persistence Annotations
Although we have now covered most of the core EJB 3 persistence annotations, there are a few
others that you will encounter fairly frequently. We cover some of these in passing in the fol-
lowing sections.
Temporal Data
Fields or properties of an entity that have java.util.Date or java.util.Calendar types repre-
sent temporal data. By default, these will be stored in a column with the TIMESTAMP data type,
but this default behavior can be overridden with the @Temporal annotation.
The annotation accepts a single value attribute from the javax.persistence.
TemporalType enumeration. This offers three possible values: DATE , TIME , and TIMESTAMP .
These correspond respectively to java.sql.Date , java.sql.Time , and java.sql.Timestamp .
The table column is given the appropriate data type at schema generation time. Listing 6-26
shows an example mapping a java.util.Date property as a TIME type—the java.sql.Date
and java.sql.Time classes are both derived from the java.util.Date class, so confusingly,
both are capable of representing dates and times!
Listing 6-26. A Date Property Mapped as a Time Temporal Field
@Temporal(TIME)
public java.util.Date getStartingTime() {
return this.startingTime;
}
Search WWH ::




Custom Search