【问题标题】:Hibernate 5.2.17: ORA-01797: this operator must be followed by ANY or ALLHibernate 5.2.17:ORA-01797:此运算符后面必须跟 ANY 或 ALL
【发布时间】:2019-04-28 15:11:20
【问题描述】:

我有一个 Oracle 18.4.0 XE 数据库,我试图从 JPA 2.1 访问它,由 Hibernate 5.2.17 实现。

我在两个实体之间有一个ManyToMany 连接:

public class PermissionEntity implements Serializable {
    private static final long serialVersionUID = -3862680194592486778L;

    @Id
    @GeneratedValue
    private Long id;

    @Column(unique = true)
    private String permission;

    @ManyToMany
    private List<RoleEntity> roles;
}
public class RoleEntity implements Serializable {
    private static final long serialVersionUID = 8037069621015090165L;

    @Column(unique = true)
    private String name;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "roles")
    private List<PermissionEntity> permissions;
}

尝试在 PermissionRepository:findAllByPermission(Iterable&lt;String&gt; permissions) 上运行 Spring Data JPA 请求时,出现以下异常:

Error : 1797, Position : 140, Sql = select permission0_.id as id1_0_, permission0_.permission as permission2_0_ from PermissionEntity permission0_ where permission0_.permission=(:1  , :2 ), OriginalSql = select permission0_.id as id1_0_, permission0_.permission as permission2_0_ from PermissionEntity permission0_ where permission0_.permission=(? , ?), Error Msg = ORA-01797: this operator must be followed by ANY or ALL

【问题讨论】:

    标签: java spring hibernate spring-data-jpa oracle18c


    【解决方案1】:

    您告诉 Spring Data Jpa 引擎搜索Permission,其中权限等于列表。它应该使用 IN 运算符,因此您的方法名称应该是:

    findAByPermissionIn(Iterable<String> permissions)
    

    【讨论】:

      【解决方案2】:

      使用“in”关键字:findAllByPermissionIn(Iterable&lt;String&gt; permissions)

      这将产生如下查询:where permission0_.permission IN (:permissions)

      【讨论】:

        猜你喜欢
        • 2021-04-21
        • 1970-01-01
        • 2014-06-16
        • 1970-01-01
        • 2012-08-21
        • 2014-03-31
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        相关资源
        最近更新 更多