我有一个看起来像这样的通用 DAO 类:
public class GenericDaoJpa <T extends DomainObject> implements GenericDao<T> {
private final Class<T> type;
@PersistenceContext(type=PersistenceContextType.TRANSACTION, unitName="myPersistenceUnit")
protected EntityManager entityManager;
public GenericDaoJpa(Class<T> type) {
super();
this.type = type;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
public T get(Object id) {
return (T) entityManager.find(type, id);
}
}
实现 DAO 类如下所示:
@Repository("appDao")
public class ProductDaoJpa extends GenericDaoJpa<Product> implements ProductDao{
public ProductDaoJpa() {
super(Product.class);
}
public List<Product> getAllProducts() {
return getAll();
}
}
我为不同的数据库配置了另一个名为 mySecondPersistenceUnit 的 persistentUnit。我想创建一个新的 DAO 类,它也将扩展 GenericDaoJpa 类,但使用不同的持久单元。如何扩展 GenericDaoJpa 类,但为每个 DAO 使用不同的持久单元?
我尝试将此声明移动到每个 DAO 类,但这会导致父类无法编译,因为它没有对 entityManager 的引用。
@PersistenceContext(type=PersistenceContextType.TRANSACTION, unitName="myPersistenceUnit")
protected EntityManager entityManager;