如何解决使用名为查询的占位符jpa传递列名作为参数,返回错误数据
我从下面的代码获取列表中的列名,而不是列值
例如
should get [12.4,54.6,65.7,88.7,44.8]
but getting [onsite,onsite,onsite]
DAO:
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;
}
服务代码:
列表dbLocations = providerDao.getLocation(“ onsite”,“职位”,“职位”,“ tier1”,“ 8”);
jpa命名查询返回的是列名而不是值的列表
解决方法
每当使用它们时,请在任何地方给它们相同的名称。如果您使用的是html文件来检索这些数据,那么也可以。名称不明确可能是导致此问题的原因。
,我已经在我的项目中尝试过这种方法。它将无法正常工作。更好的方法是在dao层上创建一个类似于getLocation的方法来获取每个列,并且可以在每个方法上调用swith case根据传递的列名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。