java - 将 Map<String,String> 转换为 Map<Long,Long>

标签 java

<分区>

我在扩展 LazyDataModel 的类中有以下代码的 Primefaces

@Override
    public List<Project> load(int first, int pageSize,
            String sortField, SortOrder sortOrder, Map<String, String> filters) {

在上面的过滤器中是类型 Map<String, String>

在我的 Hibernate 实体类中,我有以下内容

private Long projectNo; // with getters and setters

在 DAO 类中,我还有以下内容可以在 JSF 页面中进行搜索并返回结果

public void getProjects(ProjectQueryData data) { 

Map<String, String> filters = data.getFilters();
// ....
....

String projectNo = filters.get("projectNo");
List<Predicate> criteria = new ArrayList<Predicate>();
            if (projectNo!= null) {
                ParameterExpression<String> pexp = cb.parameter(String.class,
                        "projectNo");               
                Predicate predicate = cb.equal(emp.get(Project_.projectNo),
                        pexp);
                criteria.add(predicate);
            }
TypedQuery<Project> q = entityManager.createQuery(c);
TypedQuery<Long> countquery = entityManager.createQuery(countQ);
q.setParameter("projectNo", projectNo); // error in this line
countquery.setParameter("projectNo", projectNo);

当我执行上面的命令时,出现以下异常

Hibernate Parameter value [89457] did not match expected type [java.lang.Long]

因为projectNo属于龙。

我的问题是如何转换 Map<String,String>Map<Long,Long>这样我就不会在这一行中得到错误 q.setParameter("projectNo", projectNo);

非常感谢任何帮助。

谢谢

最佳答案

你不能施放 Map<String,String> to Map<Long,Long> ,你为什么不用Map<Object,Object>Map<String,Object>如果您的参数 Map 需要所有数据类型。

在这种情况下,您似乎也可以通过将其转换为字符串或在 Map 中设置之前很久来实现修复,

String.valueOf(projectNo);

or 

Long.toString(projectNo);

任何需要的地方。

关于java - 将 Map<String,String> 转换为 Map<Long,Long>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231686/

相关文章:

java - 如何将json响应设置为java对象

java - JScrollPane中的JTextArea, View 坐标平移

java - 如何在 Java Swing 应用程序中实现帮助菜单

java - Amazon EMR : java. io.IOException:文件已存在:s3n://<bucketname>/output/part-r-00002

java - 如何重用 Spring XML 片段

java - 如何在 Java 中生成连续泊松分布?

java - 处理异常的示例代码

java - Android 游戏开发 - 移动手机

java - 在 Eclipse 和命令行中运行 javac ant 时的类文件大小差异

java - Eclipse 4 - 无边框窗口