Cómo inyectar identificadores de los objetos personalizados en entidades JPA
Pregunta
Estoy utilizando JPA 2 para una aplicación empresarial, y mi DBA es sólo me golpeó con un toque.
Me quieren utilizar generador de ID de objeto centralizado del grupo para todos mis tablas . Este medio en lugar de utilizar valores de la tabla o una tabla de secuencias, I tendrán que llamar a un servicio web para obtener un lote de identificadores de ~ 50 .
A continuación, mientras persista algún nuevo objeto, que tendría que inyectar este Identificación del primer , y salvo que a la mesa.
Entonces, ¿cómo puedo manipular la columna @Id de una entidad para manejar esto.
¿Es tan simple como la creación de una tecla antes de persisto? Sospecho que lanzaría algún tipo de entidad no administrado con el error de ID del monitor.
Solución
Actualización:
El mejor método es especificar en realidad una estrategia de secuencia en campos generados y especificar una clase de secuencia personalizado.
APP entonces llamar al método de esta clase NextID () cada vez que se inserta un nuevo objeto.
Este método permite gráficos completos para persistir sin intervenir en cada entidad manualmente.
descubierto. Increíblemente compleja;.) - acaba de quitar la anotación GeneratedValue desde el campo de clave
Está destinado a nativos Ids como SSN o de correo electrónico, pero funciona independientemente de la fuente.
@Entity
public class Client{
@Id
@Column(name="CLNT_ID")
private long key;
@Column(name="CLNT_NUM")
private String clientNumber;
...
}