【发布时间】:2010-09-22 06:39:41
【问题描述】:
我想在 Expense(ID, NAME, CATEGORY) 和两个表之间创建多对一映射 类别(ID,名称)。 在我的课堂上,我创建了一个字段“类别类别”及其设置器和获取器。 我是在网上看到一些东西后才做的。我必须在 Category.java 类中进行哪些更改。就目前而言,它看起来像,
public class Category{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int catId;
private String catName;
public Category() {
}
public int getCatId() {
return this.catId;
}
public void setCatId(int catId) {
this.catId = catId;
}
public String getCatName() {
return this.catName;
}
public void setCatName(String catName) {
this.catName = catName;
}
}
我不想使用 xml 配置进行映射。我认为,注解对我这样的初学者来说是件好事。
还有我的老! SQL 查询看起来像,
SELECT EXPENSES.EXPNS_ID, EXPENSES.CAT_ID, EXPENSES.NAME, CATEGORY.CAT_NAME FROM EXPENSES INNER JOIN CATEGORY ON EXPENSES.CAT_ID = CATEGORY.CAT_ID WHERE USER_NAME="+currentUserName
如何在 Hibernate 中使用内连接?
任何建议!!
谢谢!
更新
感谢所有回答者, 我试过你所说的,它返回一个空列表。
测试我设置了表中的“用户名=泰米尔语”。 Hibernate 生成的查询如下所示,
select expens0_.expnsId as expnsId1_, expens0_.catId as catId1_, expens0_.category_catId as category7_1_, expens0_.userName as userName1_ from Expens expens0_ inner join Category category1_ on expens0_.category_catId=category1_.catId where expens0_.userName=?
作为一个初学者,我对 JPQL 有一些疑问,我想要来自 Category[catId, catName] 表的 catName。 catId 也可以在 Expens[expnsId, catId, userName] 中使用。
通过在 Expens.java 类中添加以下行,它将如何为我提供 catName 以及 Expens 表中的其他变量。
@ManyToOne
private Category category
// getters, setters
我无法理解它。在不理解这一点的情况下,我无法更进一步,我必须在我的项目中提供更多映射。如果这个映射清楚,我可以放心地进行其他操作。
我使用的查询是pascal的版本:Query query = hSession.createQuery("SELECT e FROM Expens e JOIN e.category c WHERE e.userName = :userName").setParameter("userName", userName);
对我来说,hibernate 生成的查询看起来和我的旧 SQl 查询一样。我在这里找不到问题。
【问题讨论】: