JPA - 从动态表名称中选择所有行

时间:2017-06-26 09:35:24

标签: java jpa java-ee

大家好我是jpa的新手,命名查询等等。我需要这样的东西:

select t from :tableName t

稍后在代码中我想要这样的东西:

em.createQuery(...);
setParameter("tableName", "Person")

结果将是:

select * from person

如何编写这样的通用jpa查询语句,允许从:tableName中选择所有行,这些行可以在运行时定义?提前谢谢

2 个答案:

答案 0 :(得分:1)

尝试这个我认为这很有效

 EntityManagerFactory emfactory=Persistence.createEntityManagerFactory("Eclipselink_JPA" );
  EntityManager entitymanager = emfactory.createEntityManager();

  Query query = entitymanager.
  createQuery("Select p from Person p");
  List<String> list = query.getResultList();

答案 1 :(得分:0)

setParameter("foo", foo)用于设置表的列的值,而不是设置表名。我不认为它会起作用,因为你想动态设置表名。

你可以试试这个:

public returnType foo(String tableName){
    String jpql = "SELECT t FROM " + tableName+ " t";
    Query query = em.createQuery(jpql);
    //rest of the code    
}
相关问题