Limitaciones:
- No se permite sentencias con joins (simplificar el mapeador)
- Sólo detecta los cambios en el listado de entidades (@OneToMany o @ManyToMany) cuando se añade o borra un elemento
- Para detectar los cambios anteriores (borrar o añadir elementos de un listado de entidades relacionadas) se usan una implementación de List propia
- La comparación de una entidad relacionada (@ManyToOne o @OneToOnte) la hace por id, no por el valor de los campos
- Por lo anterior, tampoco detecta los cambios del estilo cart.getCartItem.setQuantity(10)
Mejoras:
- Usar Bytecode Enhancement (por ejemplo, con Byte Buddy)para rastrear cambios en las entidades relacionadas
- Mejorar el mapeador para poder usar joins (public T mapRowToEntity(ResultSet resultSet, String prefix), por ejemplo, para poder mapear campos del tipo p_name….)