Implementieren Sie die Generische Abstrakte Entität-Klasse mit dao-Schnittstelle und Implementierung

Hey, ich würde gerne generischen Modells/entity-Klasse, die würde der download von id vom Typ long element aus der db. Die Methode für das ist wie diese:

public class GenericModel   {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long id;

    public static GenericModel getBy(Long id) {
        return JPA.em().find(GenericModel.class, id);
    }
}

Aber im Generischen Modell, das erweitert wird durch Kind-Modell-Klasse-I-'have dynamisch deklarieren entity-Klasse name zu finden in der db.

Hätte ich gern ein generic entity-Klasse, wo ich Sie haben gemeinsame Methoden wie getById(). Und dass generische Klasse erweitert werden, indem konkrete entity-Klasse. Ich werde nicht schreiben müssen in jeder Modell-Klasse der selben Methode, denn es wird geerbt von der generischen Klasse –

Wie kann ich erreichen das?

Hier ist meine DAO-Schnittstelle. Ich bin nicht ganz sicher:

public interface GenericModelDao<T> {
    public void add(T entityClass);
    public void update(T entityClass);
    public void delete(long id);
    public T get(long id);
    public List<T> get();
}

Und Mein DAO-Implementierungsklasse dieser Schnittstelle

 @Repository
public class GenericModelDaoImpl <T extends GenericModel> implements GenericModelDao {
    public Class<T> entityClass;

    GenericModelDaoImpl(){
        setEntityClass(((Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]));
    }
    public void setEntityClass(Class<T> entityClass) {
        this.entityClass = entityClass;
    }
    @Autowired
    private SessionFactory sessionFactory;
    private Session getCurrentSession() {
        return sessionFactory.getCurrentSession();
    }

    @Override
    public T get(long id) {
        return (T) getCurrentSession().get(entityClass, id);
    }
    @Override
    public void delete(long id) {
        T entityClass = get(id);
            getCurrentSession().delete(entityClass);
    }
    @Override
    public List<T> get() {
        return getCurrentSession().createQuery("from " + entityClass ).list();
    }
    @Override
    public void add(Object entityClass) {
        getCurrentSession().save(entityClass);
    }
    @Override
    public void update(Object entityClass) {
        getCurrentSession().update(entityClass);
    }
}

Und meine GenericModel Klasse

@MappedSuperclass
public abstract class GenericModel<T extends GenericModel> {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long id;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

}

Bitte geben Sie mir einige zusätzliche Hilfe noch mehr 😀

  • es ist schwer für mich zu verstehen, was Sie tun möchten.
  • Ich möchte generischen entity-Klasse, wo ich Sie haben gemeinsame Methoden wie getById(). Und dass generische Klasse erweitert werden, indem konkrete entity-Klasse. Ich werde nicht schreiben müssen in jeder Modell-Klasse der selben Methode, denn es wird vererbt von einer generischen Klasse
InformationsquelleAutor masterdany88 | 2014-11-06
Schreibe einen Kommentar