Difference between revisions of "EclipseLink/UserGuide/JPA/Basic JPA Development/Mapping/Basic Mappings/Default Conversions and Converters/TypeConverter"
< EclipseLink | UserGuide | JPA | Basic JPA Development | Mapping | Basic Mappings | Default Conversions and Converters
m |
m |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{EclipseLink_UserGuide |
− | | | + | |info=y |
− | =@TypeConverter | + | |api=y |
− | + | |apis= | |
+ | *[http://www.eclipse.org/eclipselink/api/latest/org/eclipse/persistence/annotations/TypeConverter.html @TypeConverter] | ||
+ | }} | ||
+ | =@TypeConverter= | ||
+ | <tt>@TypeConverter</tt> is an EclipseLink-specific annotation. You can use it to specify an <tt>org.eclipse.persistence.mappings.converters.TypeConversionConverter</tt> for modification of the data value(s) during the reading and writing of a mapped attribute. | ||
<source lang="java"> | <source lang="java"> | ||
@Target({TYPE, METHOD, FIELD}) | @Target({TYPE, METHOD, FIELD}) | ||
Line 12: | Line 16: | ||
} | } | ||
</source> | </source> | ||
− | + | {{EclipseLink_AttributeTable | |
+ | |caption=<span>@TypeConverter Annotation Attributes</span> | ||
+ | |content= | ||
+ | <tr> | ||
+ | <td>'''<tt>name</tt>'''</td> | ||
+ | <td>Set this attribute to the <tt>String</tt> name for your converter. Ensure that this name is unique across the persistence unit.</td> | ||
+ | <td></td> | ||
+ | <td>Yes</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>'''<tt>dataType</tt>'''</td> | ||
+ | <td>Set this attribute to the type stored in the database.</td> | ||
+ | <td><tt>void.class</tt><sup>1</sup></td> | ||
+ | <td>No</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>'''<tt>objectType</tt>'''</td> | ||
+ | <td>Set the value of this attribute to the type stored on the entity.</td> | ||
+ | <td><tt>void.class</tt><sup>1</sup></td> | ||
+ | <td>No</td> | ||
+ | </tr> | ||
+ | }} | ||
+ | <sup>1</sup> The default is inferred from the type of the persistence field or property. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | The following example shows how to use the <tt>@TypeConverter</tt> annotation to convert the <tt>Double</tt> value stored in the database to a <tt>Float</tt> value stored in the entity. | |
− | + | ||
<span id="Example 19-8"></span> | <span id="Example 19-8"></span> | ||
− | '' | + | ======'' Example: @TypeConverter Annotation''====== |
<source lang="java"> | <source lang="java"> | ||
@Entity | @Entity |
Latest revision as of 10:04, 5 May 2011
EclipseLink | |
Website | |
Download | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
Key API
@TypeConverter
@TypeConverter is an EclipseLink-specific annotation. You can use it to specify an org.eclipse.persistence.mappings.converters.TypeConversionConverter for modification of the data value(s) during the reading and writing of a mapped attribute.
@Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME) public @interface TypeConverter { String name(); Class dataType() default void.class; Class objectType() default void.class; }
Attribute | Description | Default | Required? |
---|---|---|---|
name | Set this attribute to the String name for your converter. Ensure that this name is unique across the persistence unit. | Yes | |
dataType | Set this attribute to the type stored in the database. | void.class1 | No |
objectType | Set the value of this attribute to the type stored on the entity. | void.class1 | No |
1 The default is inferred from the type of the persistence field or property.
The following example shows how to use the @TypeConverter annotation to convert the Double value stored in the database to a Float value stored in the entity.
Example: @TypeConverter Annotation
@Entity public class Employee implements Serializable{ ... @TypeConverter ( name="doubleToFloat", dataType=Double.class, objectType=Float.class, ) @Convert("doubleToFloat") public Number getGradePointAverage() { return gradePointAverage; } ... }