【问题标题】:Hibernate HQL query get data from table associated with another tableHibernate HQL 查询从与另一个表关联的表中获取数据
【发布时间】:2016-08-04 19:00:45
【问题描述】:

我有一个名为 Locality 的实体:-

@Entity
@Table(name = "CMN_LOCALITY_MASTER")
public class Locality {
    @Id
    @Column(name = "LOCALITY_ID", unique = true, nullable = false,length = 11)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    int localityId;

    @Column(name = "LOCALITY_DESCRIPTION",length=70)
    String localityDescription;

    @JsonProperty(access = Access.WRITE_ONLY)
    @ManyToOne
    @JoinColumn(name = "PINCODE_ID")
    Pincode pinCode;

    @JsonIgnore
    @ManyToOne
    City city;
}

其中包含另一个名为 City 和 Pincode 的实体。

城市如下:-

@Entity
@Table(name = "CMN_CITY_MASTER")
public class City{

    @Id
    @Column(name = "CITY_ID", unique = true, nullable = false,length = 11)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int cityId;

    @Column(name = "CITY",length = 150)
    private String description;

    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "STATE_ID")
    private State state;
}

我想从具有 City ID =(例如 1)的 Locality 实体/表中获取所有数据

我尝试了以下查询:-

@Query("SELECT a FROM Locality a INNER JOIN a.city c WHERE c.cityId=?1")
List<Locality>getAllLocalityByCity(int cityId);

还有

@Query("SELECT a FROM Locality a WHERE a.city.cityId=?1")
List<Locality>getAllLocalityByCity(int cityId);

但这些都不起作用。

您能否建议我一些查询数据的方法/方法?

另外,是否有一个 Eclipse 插件/工具可以比每次查询更改都重新启动服务器更快地测试 HQL 查询?

您能否建议阅读文档/书籍来学习 HQL?

【问题讨论】:

    标签: mysql hibernate


    【解决方案1】:

    由于您没有提供任何日志或解释,我建议您尝试以下操作:

    @Query("SELECT a FROM Locality a INNER JOIN a.city c WHERE c.cityId = :cityId")
    List<Locality>getAllLocalityByCity(@Param("cityId") int cityId);
    

    为了学习 HQL,我将从 Hibernate Docs 开始。你也可以看看Criteria API

    【讨论】:

    • 是的,这行得通。实际上,架构中的列名存在错误。因此查询不起作用。我检查了日志并更正了它。非常感谢.. :)
    猜你喜欢
    • 2021-11-22
    • 2012-03-13
    • 2012-03-03
    • 1970-01-01
    • 2015-04-25
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多