ERROR: operator does not exist: character varying = bytea

ERROR: operator does not exist: character varying = bytea

我有一个基于 Spring MVC + Security + Hibernate 的项目。 Hibernate 和 jdbc 版本是:

<!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.7.Final</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.3-1102-jdbc41</version>
        </dependency>

当我尝试通过 Spring 安全表单登录时,我遇到了这个众所周知的错误。

jan 13, 2015 12:51:05 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: operator does not exist: character varying = bytea

我听说这可能是因为 PostgreSQL 和驱动程序的版本不一致,但我觉得没问题。

外键错误。使用Hibernate/JPA时,外键应该始终指向另一个table的id(主键)。您的外键引用 username 但它应该引用 id。作为替代方案,您可以在 users table 中创建 username 主键,并相应地更改实体注释。