【问题标题】:Hibernate :QuerySyntaxException: AlertToEmployee.alert is not mappedHibernate :QuerySyntaxException: AlertToEmployee.alert 未映射
【发布时间】:2019-10-18 13:14:51
【问题描述】:

我想创建一个包含两个类 Alert 和 AlertToEmployee 的连接查询,

班级警报:

public class Alert  {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String object;
    @Column(name = "is_deleted")
    private Boolean isDeleted = false;
}

类 AlertToEmployee

public class AlertToEmployee {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Enumerated(EnumType.STRING)
    private TypeAffectation typeAffectation;
    private String registrationNumber;
    private boolean isDeleted;
    @ManyToOne
    private Alert alert;
}

我创建了一个内部连接查询来获得具有特定条件的警报,但我对映射并不重要,我遇到了这个错误:QuerySyntaxException: AlertToEmployee.alert is not mapped

查询:

@Query( "SELECT new com.demo.shared.vo.AlertsVO(a.id,a.object  )" +
        "FROM  AlertToEmployee.alert a INNER JOIN  AlertToEmployee ate   ON a.id = ate.id WHERE a.isDeleted = false" +
        "  AND ate.registrationNumber = ?1 AND ate.isDeleted = false ")

我也试过这个,但它也不起作用:

@Query( "SELECT new com.demo.shared.vo.AlertsVO(a.id,a.object  )" +
        "FROM  Alert a INNER JOIN  AlertToEmployee ate   ON a.id = ate.id WHERE a.isDeleted= false" +
        "  AND ate.registrationNumber = ?1 AND ate.isDeleted = false ")

请帮忙。

【问题讨论】:

    标签: java mysql sql spring hibernate


    【解决方案1】:

    您不必执行 INNER JOIN。你的查询应该是这样的:

    @Query("SELECT new com.demo.shared.vo.AlertsVO(ate.alert.id, ate.alert.object) " +
           "FROM  AlertToEmployee ate " +
           "WHERE ate.registrationNumber = ?1 AND ate.alert.isDeleted = false")
    

    阅读文档中有关查询的更多信息:

    https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#hql

    【讨论】:

      猜你喜欢
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 2021-03-10
      相关资源
      最近更新 更多