我在Hibernate中是一个陌生的人,遇到以下情况,我不知道如何处理。
所以我有这两个实体类:
在我的数据库上映射KM_COUNTRY_AREA表的KMCountryArea:
@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
}
将KM_COUNTRY表映射到我的数据库的KMCountry:
@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类中,我具有与KMCountry实体类的实例相关联的KMCountry国家/地区字段。
为此,我使用了@OneToOne批注
@OneToOne
private KMCountry country;
据我了解,在我数据库的KM_COUNTRY_AREA表中,我将有一个包含KMCountry id(idCountry)的字段。是对的还是我错过了什么?
如果现在正确,那么我的问题是我需要创建一个命名查询,该查询给出KMCountryArea的nomeFolder字段的值,它将检索所有相关KMCountry对象的列表。
我正在尝试做这样的事情(在目前的工作阶段我无法尝试,而且我不确定这是否是正确的方法):
@NamedQueries({
@NamedQuery(name = "kmCountryByName", query = "SELECT country FROM KMCountryArea country WHERE country.nomeFolder = :nomeFolder order by country.idCountryArea")
})
是我所有的推理正确(如何绑定2个表和命名查询)还是我遗漏了一些东西?
拜托,您能帮我完成这项任务吗?
特纳克斯
最佳答案
你有
"SELECT country FROM KMCountryArea country WHERE country.nomeFolder = :nomeFolder order by country.idCountryArea"
并且您不能将“
country
”作为KMCountryArea的别名...,因为该类的字段名为“ country
”。例如,仅使用别名“ c” ...SELECT c FROM KMCountryArea c WHERE c.nomeFolder = :nomeFolder order by c.idCountryArea