当前位置: 首页 > 知识库问答 >
问题:

错误:运算符不存在:character varieting=bytea

谷梁涵忍
2023-03-14
CREATE TABLE rpaul."HK_LOGIN_DETAILS"
(
  "HK_LOGIN_DETAILS_ID" bigint NOT NULL,
  "HK_LOGIN_DETAILS_USERNAME" character varying(10) NOT NULL,
  "HK_LOGIN_DETAILS_PASSWORD" character varying(50) NOT NULL,
  CONSTRAINT "HK_LOGIN_DETAILS_PK" PRIMARY KEY ("HK_LOGIN_DETAILS_ID" ),
  CONSTRAINT "HK_LOGIN_DETAILS_UK" UNIQUE ("HK_LOGIN_DETAILS_USERNAME" )
)

这个表的hibernate映射如下所述

<hibernate-mapping package="net.rpaul.projects.homekeeping.domain.login">
    <class name="LoginDetails" table="`HK_LOGIN_DETAILS`">
        <id name="id" column="`HK_LOGIN_DETAILS_ID`" type="long">
            <generator class="assigned" />
        </id>
        <property name="userName" type="string" column="`HK_LOGIN_DETAILS_USERNAME`" not-null="true" />
        <property name="password" type="string" column="`HK_LOGIN_DETAILS_PASSWORD`" not-null="true" />
    </class>
</hibernate-mapping>

在loginDetails.java中,我将id字段声明为long,userName和password字段声明为string。当我尝试执行以下命令时

List list =  getHibernateTemplate().find("from LoginDetails ld where ld.userName = ?", userName);

我得到

我不明白哪里出了问题。如有任何帮助,不胜感激。

共有1个答案

长孙智刚
2023-03-14

故障排除检查表:

#1:根据使用的数据库类型,您需要使用以下SQL命令查找列名及其各自的数据类型:

SELECT
   table_name,
   column_name,
   data_type
FROM
   information_schema.columns
WHERE
   table_name = 'the-name-of-the-table-in-the-database';

预期结果将给出三列;尤其是'data_type'列。

pojo示例:UserAccountBalance.class

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

@Builder//Lombok
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@Data//Lombok
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Schema
@Entity(name = "user_account_balance")
@Table(name = "user_account_balance")
public class UserAccountBalance {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @NotNull
    @Column(name = "username", nullable = false)
    private String userName;

    @NotNull
    @Column(name="currency_code", nullable = false)
    @Enumerated(EnumType.STRING)
    private CurrencyCode currencyCode;

    @NotNull
    @Column(name = "balance", nullable = false)
    private BigDecimal balance;

//Could be placed into and AuditModel class
    @Column(name = "datecreated", nullable = false, updatable = false)
    @JsonIgnore
    @DateCreated
    @CreationTimestamp
    private LocalDateTime dateCreated;

    @Column(name = "date_updated", nullable = false, updatable = false)
    @JsonIgnore
    @DateUpdated
    private LocalDateTime dateUpdated;

    @NotNull
    @Column(name = "active")
    @JsonIgnore
    private int active;

    @Column(name = "deleted")
    @JsonIgnore
    private int deleted;

}

存储库类:

//选项1:UserAccountBalanceRepository.class

@Repository
public abstract class UserAccountBalanceRepository implements CrudRepository<UserAccountBalance, Long> {

    private final EntityManager entityManager;

    public UserAccountBalanceRepository(@CurrentSession EntityManager entityManager){
        this.entityManager = entityManager;
    }

    @Transactional(readOnly = true)
    @Query(
            value="SELECT uab.*" +
                    " FROM public.user_account_balance uab" +
                    " WHERE (currency_code =cast(:currencyCode AS text)" +
                    " AND userName =:userName" +
                    " AND active =:active)",
            countQuery = "SELECT uab.*" +
                    " FROM public.user_account_balance uab" +
                    " WHERE (currency_code = cast(:currencyCode AS text)" +
                    " AND userName =:userName" +
                    " AND active =:active)",
            nativeQuery = true
    )
    public abstract Optional<UserAccountBalance> findByUserAccountBalance_UserName_And_CurrencyCode(
            String userName,
            CurrencyCode currencyCode,
            int active
    );

}
@Repository
public abstract class UserAccountBalanceRepository implements CrudRepository<UserAccountBalance, Long> {

    private final EntityManager entityManager;

    public UserAccountBalanceRepository(@CurrentSession EntityManager entityManager){
        this.entityManager = entityManager;
    }

    @Transactional(readOnly = true)
    @Query(
            value="SELECT uab.*" +
                    " FROM public.user_account_balance uab" +
                    " WHERE (currency_code =:currencyCode" +
                    " AND userName =:userName" +
                    " AND active =:active)",
            countQuery = "SELECT uab.*" +
                    " FROM public.user_account_balance uab" +
                    " WHERE (currency_code = :currencyCode" +
                    " AND userName =:userName" +
                    " AND active =:active)",
            nativeQuery = true
    )
    public abstract Optional<UserAccountBalance> findByUserAccountBalance_UserName_And_CurrencyCode(
            String userName,
            String currencyCode,/*this is what truly worked out for me perfectly*/
            int active
    );

}
 类似资料:
  • 执行简单查询时出现操作符不匹配错误。这是什么原因造成的? 表定义:

  • 下面我有一个Postgres查询,它基于INSERT或UPDATE audit_operation将主表中的数据恢复到特定时间点的审计表中的数据。 供参考- 工柞道 main_table中的列类型 id: uuid val1:uuid val2:文本 审计表 audit_table中的列类型 id: uuid val1:uuid val2:文本 val3:时间戳 val4:文本 在为以下输入执行上

  • 当我在postgres中直接执行下面的查询时,它工作正常,但当我使用JPA运行时,就会出现下面的错误。 查询示例: 错误: ERRORorg.hibernate.engine.jdbc.spi.SqlExceptionHelper-ERROR:运算符不存在: boolean=byTea提示:没有运算符匹配给定的名称和参数类型。可能需要添加显式类型转换。 在JPA中配置如下: 基本上我试图实现的是,

  • 问题内容: 应该返回什么?根据我的计算,应该是,但是解释器会返回。 这是Python的事情,还是我的数学很糟糕? 问题答案: 根据docs,其优先级高于,因此您的代码等同于。为了获得理想的结果,您可以将其放在括号中 或使用内置功能 或功能(返回值)

  • 我在我的postgresql函数中添加nth月(2),但在执行时显示错误错误错误:运算符不存在:没有时区整数的时间戳提示:没有运算符匹配给定的名称和参数类型(s)。可能需要添加显式类型转换。查询:选择pi_datenthMonth||月:: 间隔

  • 本文向大家介绍PHP错误控制运算符,包括了PHP错误控制运算符的使用技巧和注意事项,需要的朋友参考一下 介绍 在PHP中,将@符号定义为错误控制运算符。当它以任何表达式为前缀时,PHP解析器在执行时遇到的任何错误都将被抑制,并且该表达式将被忽略。 以下代码尝试打开一个不存在的文件进行读取操作,但是PHP解析器报告警告 示例 输出结果 将显示以下结果 在fopen()表达式前添加@符号可抑制错误消息