Extreme Java When vanilla Java is not enough


Booleans in JPA (the portable way)

If you want to map a boolean value in JPA, you will have a headache if your RDBMS is Oracle. Since it does not support a boolean data type, you usually create a CHAR(1) 'Y'/'N' field and use a lot of bad words to describe the feeling you have when you find out that JPA does not support boolean-to-char convertion.

A nice and portable workaround is described here. The trick is to remember why getter/setter encapsulation is a good pratice - you can do a lot more than just plain old get/set:

private char enabled;
public boolean isEnabled() {
  return enabled == 'Y';
public void setEnabled(Boolean enabled) {
  this.enabled = (enabled ? 'Y' : 'N');