嘿我想要通過從db類型的長型元素ID下載泛型模型/實體類。該方法是這樣的:使用道界面和實現實現泛型抽象實體類
public class GenericModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long id;
public static GenericModel getBy(Long id) {
return JPA.em().find(GenericModel.class, id);
}
}
但將由子模型類I'have擴展到動態聲明實體類的名字在DB找到通用模型。
我想要有泛型實體類,我將有像getById()這樣的常用方法。那個泛型類將被混合實體類擴展。我不會在每個模型類中編寫相同的方法,因爲它將繼承自泛型類 -
我該如何實現這一目標?
這是我的DAO接口。我不太肯定這一點:
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();
}
和我的DAO實現類這個接口
@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);
}
}
而且我GenericModel類
@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;
}
}
的請給我一些額外的幫助一次: D
這是我很難了解你想做什麼。 – huidube 2014-11-06 15:29:47
我想有通用的實體類,我會有像getById()這樣的常用方法。那個泛型類將被混合實體類擴展。我不必在每個模型類中寫入相同的方法,因爲它將繼承自泛型類 – masterdany88 2014-11-07 13:18:01