我想要做的是通过XML注入几乎与通过A @PersistenceContext注释完成的方式相同.我需要这个,因为我需要将不同的实体管理器注入到同一个DAO中.数据库彼此镜像,我宁愿有1个基类,对于那个基类的实例,然后创建多个类,这样我就可以使用@PersistenceContext注释.
这是我的例子.这就是我现在正在做的事情并且它有效.
public class ItemDaoImpl {
protected EntityManager entityManager;
public List<Item> getItems() {
Query query = entityManager.createQuery("select i from Item i");
List<Item> s = (List<Item>)query.getResultList();
return s;
}
public void setEntityManger(EntityManager entityManager) {
this.entityManager = entityManager;
}
}
@Repository(value = "itemDaoStore2")
public class ItemDaoImplStore2 extends ItemDaoImpl {
@PersistenceContext(unitName = "persistence_unit_2")
public void setEntityManger(EntityManager entityManager) {
this.entityManager = entityManager;
}
}
@Repository(value = "itemDaoStore1")
public class ItemDaoImplStore1 extends ItemDaoImpl {
@PersistenceContext(unitName = "persistence_unit_1")
public void setEntityManger(EntityManager entityManager) {
this.entityManager = …Run Code Online (Sandbox Code Playgroud) 我想利用可变参数模板来替换下面的标准类型列表代码.另外,请注意,这使用int作为类型.我试图加入C++ 11定义的强类型枚举,所以我想用模板参数类型替换int HEAD.
template <int HEAD, class TAIL>
struct IntList {
enum { head = HEAD };
typedef TAIL tail;
};
struct IntListEnd {};
#define LIST1(a) IntList<a,IntListEnd>
#define LIST2(a,b) IntList<a,LIST1(b) >
#define LIST3(a,b,c) IntList<a,LIST2(b,c) >
#define LIST4(a,b,c,d) IntList<a,LIST3(b,c,d) >
Run Code Online (Sandbox Code Playgroud)
这就是我试图走下去的道路:
template <class T, T... Args>
struct vlist;
template <class T, T value, T... Args>
struct vlist {
T head = value;
bool hasNext() {
if (...sizeof(Args) >=0 )
return true;
}
vlist<T,Args> vlist;
vlist getNext () {
return vlist;
} …Run Code Online (Sandbox Code Playgroud)