java - stored - Interfaces de mapeo JPA
query native java (2)
También puede presentar una clase abstracta sin eliminar la interfaz.
// not an entity
public interface Account {
public void doStuff();
}
@Entity
public abstract class BaseAccount {
public void doStuff();
}
@Entity
public class OverSeasAccount extends AbstractAccount {
public void doStuff() { ... }
}
@Entity
public class OverDrawnAccount extends AbstractAccount {
public void doStuff() { ... }
}
Tengo problemas para crear una asignación cuando el tipo de lista es una interfaz. Parece que necesito crear una clase abstracta y usar la columna de discriminador ¿es este el caso? Preferiría no tener que hacerlo ya que la clase abstracta solo contendrá un método abstracto y prefiero mantener la interfaz.
Tengo una interfaz, llamémosla Cuenta
public interface Account {
public void doStuff();
}
Ahora tengo dos implementadores concretos de Account OverSeasAccount y OverDrawnAccount
public class OverSeasAccount implements Account {
public void doStuff() {
//do overseas type stuff
}
}
Y
public class OverDrawnAccount implements Account {
public void doStuff() {
//do overDrawn type stuff
}
}
Tengo una clase llamada Trabajar con una lista
private List<Account> accounts;
Estoy mirando los campos de discriminación, pero parece que solo puedo hacer esto para las clases abstractas. ¿Es este el caso? Cualquier puntero apreciado. ¿Puedo usar discriminadores para interfaces?
Creo que es posible hacer que una interfaz sea el supertipo de un mapeo. Sin embargo, es posible que no puedas usar anotaciones. Las anotaciones funcionan bien con los archivos de configuración xml, por lo que es posible que deba agregar un archivo de configuración de hibernación a su proyecto con las asignaciones que necesita. Pero podrás guardar las anotaciones para el resto de tu proyecto.
Este problema lo analiza más. Parece que termina con una sugerencia sobre cómo hacerlo con anotaciones, quién sabe. Sugeriría que xml es aún más seguro por ahora Esta página de los documentos explica el mapeo xml necesario.