“运算符不存在:uuid = bytea”Java 与 Postgres

2024-03-26

我在引用此查询时遇到问题。在 Postgres 上,此查询执行时没有错误。在JAVA上,会抛出以下异常:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
cause
org.postgresql.util.PSQLException: ERROR: operator does not exist: uuid = bytea
  Note: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  Position: 404

我做什么?

我的方法:

public List<CivilRecord> dashboardSearch(CivilRecordSearch civilRecordSearch)
    throws MessageException {
    SearchValidation.validateDashboardSearch(civilRecordSearch);
    List<CivilRecord> l = new ArrayList<>();
    try {
        StringBuilder query = new StringBuilder();
        // query.append("select
        // c.id_civil_record\\:\\:text,c.nm_request,c.nm_rg,c.tx_name,c.dt_register,c.bl_priority
        // ");
        query.append("select c.id_civil_record,c.nm_request,c.nm_rg,c.tx_name,c.dt_register,c.bl_priority ");
        query.append("from sc_civil.tb_civil_record c ");
        query.append("inner join sc_civil.tb_workflow_record w ");
        query.append("on w.id_civil_record = c.id_civil_record ");
        query.append("left join sc_civil.tb_lock l ");
        query.append("on l.id_record = c.id_civil_record ");
        query.append("where c.id_site = :idSite ");

        if (civilRecordSearch.getPriority() == null || civilRecordSearch.getPriority().equals(false))
            query.append("and c.bl_priority = :priority ");
        query.append("and c.bl_canceled = :canceled ");
        query.append("and w.id_type_workflow = :idTypeWorkflow ");
        query.append("and w.id_type_status_workflow = :idTypeStatusWorkflow ");

        query.append("and (l is null or l.id_user = :idUser) ");

        if (!StringUtils.isEmpty(civilRecordSearch.getName()))
            query.append("and c.tx_name ilike :name ");
        if (!StringUtils.isEmpty(civilRecordSearch.getRg()))
            query.append("and c.nm_rg like :rg ");

        if (civilRecordSearch.getRequestNumber() != null)
            query.append("and c.nm_request = :request ");

        query.append("order by c.bl_priority desc, c.dt_register ");

        Query q = em.createNativeQuery(query.toString());
        q.setParameter("idSite", civilRecordSearch.getSite().getId());
        if (civilRecordSearch.getPriority() == null || civilRecordSearch.getPriority().equals(false))
            q.setParameter("priority", false);
        q.setParameter("idTypeWorkflow", civilRecordSearch.getTypeworkflow().getId());
        q.setParameter("idTypeStatusWorkflow", civilRecordSearch.getTypestatusworkflow().getId());
        q.setParameter("idUser", civilRecordSearch.getIdUser());
        q.setParameter("canceled", false);
        if (!StringUtils.isEmpty(civilRecordSearch.getName()))
            q.setParameter("name", "%" + civilRecordSearch.getName() + "%");
        if (civilRecordSearch.getRequestNumber() != null)
            q.setParameter("request", civilRecordSearch.getRequestNumber());
        if (!StringUtils.isEmpty(civilRecordSearch.getRg()))
            q.setParameter("rg", civilRecordSearch.getRg());

        q.setMaxResults(maxResult);

        List<Object []> lo = q.getResultList();
        em.clear();
        for (Object [] o : lo) {
            CivilRecord c = new CivilRecord();
            c.setIdCivilRecord(UUID.fromString((String) o[0]));
            c.setRequest((Long) o[1]);
            c.setRg((String) o[2]);
            c.setName((String) o[3]);
            c.setWorkflowRecords(findStatus(c.getIdCivilRecord()));
            l.add(c);
        }
        return l;
    }
    catch (Exception e) {
        log.severe(e.getMessage());
        throw e;
    }
}

我的班级民事记录搜索:

import java.io.Serializable;
import java.util.UUID;

public class CivilRecordSearch implements Serializable {

    private static final long serialVersionUID = 1701325902333490974L;

    // site, prioridade, tipo wf e status wf

    private Site site;
    private Boolean priority;
    private TypeWorkflow typeworkflow;
    private TypeStatusWorkflow typestatusworkflow;
    private Integer amount;
    private UUID idUser;
    private String name;
    private String rg;
    private Long requestNumber;

    public Site getSite() {
        return site;
    }

    public void setSite(Site site) {
        this.site = site;
    }

    public Boolean getPriority() {
        return priority;
    }

    public void setPriority(Boolean priority) {
        this.priority = priority;
    }

    public TypeWorkflow getTypeworkflow() {
        return typeworkflow;
    }

    public void setTypeworkflow(TypeWorkflow typeworkflow) {
        this.typeworkflow = typeworkflow;
    }

    public TypeStatusWorkflow getTypestatusworkflow() {
        return typestatusworkflow;
    }

    public void setTypeStatusWorkflow(TypeStatusWorkflow typestatusworkflow) {
        this.typestatusworkflow = typestatusworkflow;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public Integer getAmount() {
        return amount;
    }

    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    public UUID getIdUser() {
        return idUser;
    }

    public void setIdUser(UUID idUser) {
        this.idUser = idUser;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public Long getRequestNumber() {
        return requestNumber;
    }

    public void setRequestNumber(Long requestNumber) {
        this.requestNumber = requestNumber;
    }

}

我用这个表格解决了我的问题: 我对 UUID 字段使用了命令 CAST

  public List<CivilRecord> dashboardSearch(CivilRecordSearch civilRecordSearch)
      throws MessageException {
    SearchValidation.validateDashboardSearch(civilRecordSearch);
    List<CivilRecord> l = new ArrayList<>();
    try {
      StringBuilder query = new StringBuilder();
      //query.append("select c.id_civil_record\\:\\:text,c.nm_request,c.nm_rg,c.tx_name,c.dt_register,c.bl_priority ");
      query.append("select CAST(c.id_civil_record as text),c.nm_request,c.nm_rg,c.tx_name,c.dt_register,c.bl_priority ");
      query.append("from sc_civil.tb_civil_record c ");
      query.append("inner join sc_civil.tb_workflow_record w ");
      query.append("on w.id_civil_record = c.id_civil_record ");
      query.append("left join sc_civil.tb_lock l ");
      query.append("on l.id_record = c.id_civil_record ");
      query.append("where c.id_site = :idSite ");

      if (civilRecordSearch.getPriority() == null || civilRecordSearch.getPriority().equals(false))
        query.append("and c.bl_priority = :priority ");
      query.append("and c.bl_canceled = :canceled ");
      query.append("and w.id_type_workflow = :idTypeWorkflow ");
      query.append("and w.id_type_status_workflow = :idTypeStatusWorkflow ");

      query.append("and (l is null or l.id_user = CAST(:idUser AS uuid)) ");

      if (!StringUtils.isEmpty(civilRecordSearch.getName()))
        query.append("and c.tx_name ilike :name ");
      if (!StringUtils.isEmpty(civilRecordSearch.getRg()))
        query.append("and c.nm_rg like :rg ");

      if (civilRecordSearch.getRequestNumber() != null)
        query.append("and c.nm_request = :request ");

      query.append("order by c.bl_priority desc, c.dt_register ");

      Query q = em.createNativeQuery(query.toString());
      q.setParameter("idSite", civilRecordSearch.getSite().getId());
      if (civilRecordSearch.getPriority() == null || civilRecordSearch.getPriority().equals(false))
        q.setParameter("priority", false);
      q.setParameter("idTypeWorkflow", civilRecordSearch.getTypeworkflow().getId());
      q.setParameter("idTypeStatusWorkflow", civilRecordSearch.getTypestatusworkflow().getId());
      q.setParameter("idUser", civilRecordSearch.getIdUser().toString());
      q.setParameter("canceled", false);
      if (!StringUtils.isEmpty(civilRecordSearch.getName()))
        q.setParameter("name","%" + civilRecordSearch.getName() + "%");
      if (civilRecordSearch.getRequestNumber() != null)
        q.setParameter("request", civilRecordSearch.getRequestNumber());
      if (!StringUtils.isEmpty(civilRecordSearch.getRg()))
        q.setParameter("rg", civilRecordSearch.getRg());

      q.setMaxResults(maxResult);
      List<Object[]> lo = q.getResultList();
      em.clear();
      for(Object[] o : lo){
          CivilRecord c = new CivilRecord();
          c.setIdCivilRecord(UUID.fromString((String)o[0]));
          c.setRequest(((BigInteger)o[1]).longValue());
          c.setRg((String)o[2]);
          c.setName((String)o[3]);
          c.setRegister((Date)o[4]);
          c.setPriority(TypeYesNo.getByKey(((Boolean)o[5]).booleanValue()));
          c.setWorkflowRecords(findStatus(c.getIdCivilRecord()));
          l.add(c);
      }
      return l;
    } catch (Exception e) {
      log.severe(e.getMessage());
      throw e;
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“运算符不存在:uuid = bytea”Java 与 Postgres 的相关文章

随机推荐

  • 春云|假装 Hytrix |首次调用超时

    我有一项服务使用了 3 个假客户端 每次启动应用程序时 我都会在第一次调用任何假客户端时收到 TimeoutException 在一切稳定之前 我必须至少触发每个假客户端一次 在网上查了一下 问题是 feign 或 hystrix 内部的某
  • 通过隧道颠覆

    对于工作 我在一个封闭的网络中工作 我们设置了一些只能从我们的网络内部访问的 IP 地址 不过 有一个盒子 我们可以通过 SSH 进入并通过隧道到达我们各自的开发者盒子 我知道我可以通过使用以下方式从我们的开发者盒子获得流量 Lssh 的参
  • 找到 3x3 打孔的所有组合

    我参加了一个嘉年华 在每个地点 他们都会用特殊的打孔器标记您的节目 打孔器是一个 3x3 空间的网格 在每个空间中 要么有一根大头针刺破你的纸 要么没有 这让我想知道你可以用这个工具制作多少种不同的图案 我的第一个想法是 2 9 512 但
  • 在 pypy 中调用 python 文件

    我最近搬到了 PyPy 它的速度快得惊人 但是很多 python 库还没有实现 所以我有很多自制的 python 函数 我想在 PyPy 代码中调用它们 这是我的问题 有没有办法在 PyPy 中调用 python 文件或函数 并向其传递一些
  • 带有 Entity Framework 4 指南的多语言数据库

    我们正在创建一个大型电子商务数据库 需要支持多种语言的数据 例如 产品表将需要名称 描述 元标题 元关键字 元描述等的一项或多项翻译 从关系数据库设计的角度来看 有多种方法可以实现这一点 但 Entity Framework 4 添加了一些
  • 在 Android 中使用拨号盘启动应用程序

    我想通过拨号盘启动我的应用程序 我使用以下代码 用于拨号盘启动应用程序 在广播接收器中 public class HiddenReceiver extends BroadcastReceiver Override public void o
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    我正在尝试将 hibernate orm 映射工具配置到我的 java 类 并使用 PostgreSQL 作为我的数据库 并将密码配置为 password 当我尝试运行该应用程序时 我在控制台日志中遇到错误 如下所示无法创建请求的服务 or
  • 社交网站的数据库设计

    社交网站 例如 Twitter 中会出现哪些表格 到目前为止我有一个用户表 如何跟踪关注者和我关注的人 我应该为关注者和我关注的人维护一个单独的表吗 这些表中会有哪些列 请不要认为这是主观 偏离主题的 由于我是初学者 我想专家可以指导我获得
  • 如何通过 React JS 博览会正确从 Firebase 实时数据库获取随机节点

    跟进问题来自在控制台中记录变量时出现引用错误 https stackoverflow com questions 75509803 referenceerror when the variable is being logged in co
  • django 表单 - 从 clean() 引发特定字段验证错误

    我对依赖于多个字段的表单进行了验证检查 但最好让验证错误向用户具体显示哪些字段导致了问题 而不仅仅是表单顶部的错误消息 该表单有很多字段 因此可以更清楚地具体显示错误所在 作为解决方法 我尝试在每个相关字段中创建相同的验证clean fie
  • GoldenLayout,如何隐藏/显示组件?

    我有一个基于 GoldenLayout 1 5 9 的应用程序 布局是包含两列的行 请参阅下面我感兴趣的列的配置 let config content type row content type column width 31 conten
  • 用另一条具有相同位置但使用“geom_curve”在“ggplot2”中切割开头和结尾的曲线重叠绘制曲线

    我有一个df带有曲线信息 df lt data frame x c 0 0 1 1 xend c 0 1 1 0 y c 0 1 0 1 yend c 1 0 1 1 curvature c 2 5 1 1 我可以用单独的曲线绘制这些曲线c
  • Laravel Eloquent toArray 不使用方括号

    我正在编写一个 api 并尝试将一些结果转换为 JSON 当雄辩的结果转换为数组时 我期待这样的结果 id 0 id 相反 Laravel 使用表键将其显示为键 值列表 0 id 0 1 id 1 这是函数 results App Even
  • Angular Bootstrap Modal:未知提供者:$modalInstanceProvider

    我正在尝试使用 Angular Bootstrap Modal 指令 http angular ui github io bootstrap http angular ui github io bootstrap 如下 在我的控制器中打开模
  • 这个 Haskell 函数的类型签名是什么?

    我写了一个函数来检查一个数字是否是质数 prime n prime n 2 floor sqrt n where prime n c u n mod c 0 False c gt u True otherwise prime n c 1 u
  • Swift 可选链在闭包中不起作用

    我的代码看起来像这样 我的班级有一个可选的变量 var currentBottle BottleLayer BottleLayer有一个方法jiggle 这段代码使用可选链接 在我的类中编译得很好 self currentBottle ji
  • Gradle:使用注释过滤测试所需的指导

    我们正在开发一个大型测试套件 旨在运行在多种环境上 例如烟雾 性能 全套等 我们目前使用 JUnit 作为测试框架 我们想要实现的是注释测试 类或方法或两者 带有一个或多个注释 例如 SmokeTest PerformanceTest Ac
  • 响应缓存在 asp.net core 项目中不起作用

    我尝试在 asp net core 项目中实现响应缓存 但它不起作用 这是startup cs public void ConfigureServices IServiceCollection services services AddRe
  • 获取 Facebook 应用程序的应用程序访问令牌?

    我读过这个 尝试获取应用程序访问令牌 https stackoverflow com questions 12948809 trying to get app access token 而且这不起作用 我收到以下错误 error messa
  • “运算符不存在:uuid = bytea”Java 与 Postgres

    我在引用此查询时遇到问题 在 Postgres 上 此查询执行时没有错误 在JAVA上 会抛出以下异常 javax persistence PersistenceException org hibernate exception SQLGr