java - 使用占位符 jpa 命名查询将列名作为参数传递,返回不正确的数据
问题描述
我从下面的代码中获取列表中的列名而不是列值
例如
should get [12.4,54.6,65.7,88.7,44.8]
but getting [onsite,onsite,onsite,onsite,onsite]
道:
public List<String> getLocation(String location,String roles, String title,String tier,Integer level) {
List<String> result = new ArrayList<>();
try {
Query query = entityManager.createNamedQuery("getLocation");
query.setParameter("location", location);//location value onsite
query.setParameter("title",title);
query.setParameter("roles",roles);
query.setParameter("tier", tier);
query.setParameter("level", level);
result = query.getResultList();
}
catch(Exception e) {
logger.error(e.getMessage());
}
return result;
}
实体类:
@Entity
@NamedNativeQueries({
@NamedNativeQuery(name = "getLocation",
query = "select :location FROM myschema.test where title=:title and roles=:roles and level=:level and tier=:tier"
)
})
@Table(name = "test", schema = "mySchema")
public class TestEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "title")
private String title;
@Column(name = "roles")
private String roles;
@Column(name = "level")
private Integer level;
@Column(name = "tier")
private String tier;
@Column(name = "diversity")
private String diversity;
@Column(name = "onsite")
private Double onsite;
@Column(name = "offsite")
private Double offsite;
}
服务代码:
List dbLocations = supplierDao.getLocation("onsite", "job role","job title","tier1","8");
jpa 命名查询返回列名列表而不是值
解决方案
无论何时何地,无论何时使用它们,都给它们起相同的名称。如果您使用 html 文件来检索这些数据,那么也可以。名称歧义可能是导致此问题的原因。
推荐阅读
- excel - 在 Range 变量中连接 For 循环计数器
- css - 带有盒子阴影的 div 的 ZigZag 底部边框
- react-native - 未定义不是对象(评估'props.contacts.reduce') - React Native
- python - Python heappush vs simple append - 有什么区别?
- java - JPanel 仅在 for 循环完成后更新
- python - 如何在 python 的递归函数中定义共享列表?
- reactjs - React js 鹅毛笔图片上传
- ios - Swift Combine 完成按钮点击
- python - IndexError 从具有唯一值的熊猫数据框中选择
- javascript - 如果写入屏幕外画布,HTML Canvas 不会显示矩形