【问题标题】:JPA - Select All Rows from Dynamic Table NameJPA - 从动态表名称中选择所有行
【发布时间】:2017-06-26 09:35:23
【问题描述】:

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

select t from :tableName t

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

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

结果是:

select * from person

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

【问题讨论】:

标签: java jpa jakarta-ee


【解决方案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();

【讨论】:

  • 不工作.. 我正在使用休眠和 sql 服务器。查看错误:SQLServerException:必须声明表变量
【解决方案2】:

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

你可以试试这个:

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

【讨论】:

  • 他为什么要这么做? JPQL 中没有 SELECT * 这样的东西。
猜你喜欢
  • 2014-08-31
  • 2011-03-19
  • 2012-05-15
  • 1970-01-01
  • 2021-03-16
  • 2017-08-29
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
相关资源
最近更新 更多