在我实际的开发中有一个需求需要根据不同的类型来对应查询不同的table。
开始我打算用JPA提供的原生注解@Query来通过传参的方式拼接表名
@Query(value = "select a from #{tableName} where...")
但是这样会报错。这种不支持表名传参。
我使用的方法:
@PersistenceContext
EntityManager em;
StringBuffer sql = new StringBuffer("select a.id from ");
sql.append(tableName);
sql.append(" a where ... '");
Query query = em.createQuery(sql.toString());
String id = "";
if(results.size() > 0){
id = results.get(0);
}
问题得到解决。