java - hibernate 删除: SQLGrammarException Unexpected token: CROSS

标签 java hibernate hql

我有 3 个实体:

实体 A、实体 B、实体 C。

public class Entity_A {

    public List<Entity_B> entBList;
    Some other objects...

     @OneToMany(mappedBy="entityA", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER, orphanRemoval=true)
     @Fetch(value = FetchMode.SUBSELECT)
     public List<GebruikerKind> getEntBList() {
        return entBList;
     }

} 

public class Entity_B {
    public Entity_A entityA;
    public Entity_C entityC;
    Some other objects...


    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "COLUMNJOINNAME")
    public Entity_A getEntityA() {
        return entityA;
    }

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "OTHERCOLUMNJOINNAME)
    public Entity_C getEntityC() {
        return entityC;
    }
}

public class Entity_C {
    public List<Entity_B> entBList;
    Some other objects...


     @OneToMany(mappedBy="entityC", cascade = {CascadeType.ALL}, fetch = FetchType.EAGER, orphanRemoval=true)
     @Fetch(value = FetchMode.SUBSELECT)
     public List<GebruikerKind> getEntBList() {
        return entBList;
     }
} 

注意:所有 setter 都可用,并且还有许多其他对象可用:)。 据我所知,我的配置很好.. 我正在尝试删除 Entity_B:

Query query = getCurrentSession().createQuery(
            "delete from " + Entity_B.class.getName() + " eb " +
            " where eb.entityA.someField = :someField and eb.entityC.someOtherField = :someOtherField"); 


    query.setString("someField", someId);
    query.setString("someOtherField", someOtherId);
    return query.executeUpdate();

天堂的烦恼:

Hibernate 向我抛出这个 SQLGrammarException: Unexpected token: Cross。 有人知道我能做什么吗?

最佳答案

一种解决方案是重写查询。

您可以通过编写 SQL 查询来获取需要删除的 ID,从而避免 eb.entityA 和 eb.entityC 之间的交叉连接。然后对每个 id 调用 HQL delete。

关于java - hibernate 删除: SQLGrammarException Unexpected token: CROSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232944/

相关文章:

java - 与 hibernate 关联的子查询

java - 线程中的异常 "main"java.lang.ClassCastException : [Ljava. lang.Object;无法转换为 com.jalin.bank.model.Trx

apache - Hive中的子查询-获取错误 “only subquery expressions that are top level conjuncts are allowed”

java - 排序数组与哈希表 : Which data structure would be more efficient in searching over a range of dates in a calendar app?

hibernate - Grails中不区分大小写的搜索

java - 我如何使用 Junit 测试更新方法

hibernate - JPA/HIBERNATE 处理非 POJO 实体

java - 如何将 MySQL 查询转换为 HQL 查询?

java - SimpleDateFormat 解析时间日期错误分秒

java - 如何连接到本地IP地址