Changing the default type mapping
Sometimes we are interested in changing JPA's default type mapping strategy. For example
Mysql™ versions
prior to 5.0 lack an appropriate type representing boolean values. It
was therefore quite common mapping boolean properties to
CHAR(1) with possible values being 'Y' and
'N'. Hibernate will map boolean values to
tinyint(1). Supporting older software may require to
tweak the standard mapping.
Unfortunately JPA itself does not offer
any interface for this purpose. The persistence provider may offer a
solution though. Hibernate for example allows to remap ❶ types . We assume our
hibintro.v9.User class to have a
boolean property active:
| Java | package hibintro.v9;
import org.hibernate.type.Type;
...
public class User {
...
public void setCname(String cname) {this.cname = cname;}
boolean active = false;
@Type(type="yes_no") ❶
public boolean isActive() {return active;}
public void setActive(boolean active) {this.active = active;}
} |
| Sql | |
Readers being interested in more sophisticated strategies like mapping user defined data types to database types are advised to read the manual section on Hibernate types.
