我怎样才能正确实现这个获取对象列表的 Hibernate NamedQuery?

How can I correctly implement this Hibernate NamedQuery that obtain a list of objects?

我完全是 Hibernate 的新手,遇到以下情况我不知道如何处理。

所以我有这 2 个实体 classes:

  1. KMCountryArea 在我的数据库上映射 KM_COUNTRY_AREA table:

    @NamedQueries({
        @NamedQuery(name = "kmCountryByName", query = "SELECT country FROM KMCountryArea country WHERE country.nomeFolder  = :nomeFolder order by country.idCountryArea")
    })
    
    @Entity
    @Table(name = "KM_COUNTRY_AREA")
    public class KMCountryArea implements Serializable {
    
        @Id
        @GeneratedValue
        private Long idCountryArea;
    
        @Column(name = "nomeFolder")
        private String nomeFolder;
    
        @OneToOne
        private KMCountry country;
    
        // GETTER & SETTER METHODS
    }
    
  2. KMCountry 在我的数据库上映射 KM_COUNTRY table:

    @Entity
    @Table(name = "KM_COUNTRY")
    public class KMCountry implements Serializable {
    
        @Id
        @GeneratedValue
        private Long idCountry;
    
        @Column(name = "country")
        private String name;
    
        @Column(name = "workingHours")
        private String workingHours;
    
        // GETTER & SETTER METHODS
    }
    

因此,如您所见,进入 KMCountryArea class 我有 KMCountry country 字段关联到KMCountry 实体 class.

的实例

为此我使用了 @OneToOne 注释

@OneToOne
private KMCountry country;

据我所知,在我的 KM_COUNTRY_AREA table 数据库中,我将有一个包含 KMCountry id 的字段(idCountry).是对的还是我遗漏了什么?

如果它现在是正确的,我的问题是我需要创建一个命名查询,它给出 KMCountryArea[=54] 的 nomeFolder 字段的值=] 将检索所有相关 KMCountry 对象的列表。

我正在尝试做这样的事情(我不能在工作的这个阶段尝试它,我绝对不确定这是正确的方法):

@NamedQueries({
    @NamedQuery(name = "kmCountryByName", query = "SELECT country FROM KMCountryArea country WHERE country.nomeFolder  = :nomeFolder order by country.idCountryArea")
})

我的所有推理都是正确的吗(如何将 2 table 和命名查询绑定在一起)还是我遗漏了什么?

拜托,你能帮我完成这个任务吗?

Tnx

你有

"SELECT country FROM KMCountryArea country WHERE country.nomeFolder = :nomeFolder order by country.idCountryArea"

并且您不能将“country”作为 KMCountryArea 的别名...因为 class 有一个名为“country”的字段。例如,只需使用别名 "c" ...

SELECT c FROM KMCountryArea c WHERE c.nomeFolder = :nomeFolder order by c.idCountryArea