@Override
 public boolean equals(Object obj) {
   if (this == obj) {
     return true;
   }
   // DO NOT call super.equals(); because ID could be null.
   // if (!super.equals(obj)) {
   // return false;
   // }
   if (getClass() != obj.getClass()) {
     return false;
   }
   RestaurantPrefixTable other = (RestaurantPrefixTable) obj;
   if (restaurant == null) {
     if (other.restaurant != null) {
       return false;
     }
   } else if (restaurant.getId() == null) {
     if (other.restaurant.getId() != null) {
       return false;
     }
   } else if (other.restaurant == null || !restaurant.getId().equals(other.restaurant.getId())) {
     return false;
   }
   if (prefix == null) {
     if (other.prefix != null) {
       return false;
     }
   } else if (prefix.getId() == null) {
     if (other.prefix.getId() != null) {
       return false;
     }
   } else if (other.prefix == null || !prefix.getId().equals(other.prefix.getId())) {
     return false;
   }
   if (type == null) {
     if (other.type != null) {
       return false;
     }
   } else if (type.getId() == null) {
     if (other.type.getId() != null) {
       return false;
     }
   } else if (other.type == null || !type.getId().equals(other.type.getId())) {
     return false;
   }
   return true;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1; // DO NOT call super.hashCode(); because ID could be
   // null.
   result =
       prime * result
           + ((restaurant == null || restaurant.getId() == null)
               ? 0
               : restaurant.getId().hashCode());
   result =
       prime * result
           + ((prefix == null || prefix.getId() == null) ? 0 : prefix.getId().hashCode());
   result =
       prime * result + ((type == null || type.getId() == null) ? 0 : type.getId().hashCode());
   return result;
 }