我有一张category桌子,前五个是主要类别,其他是
子类别。
我需要获取前5个主要类别的子类别,所以我找到了sql查询
SELECT m.category_id,m.category_name AS 'Parent',
e.category_name AS 'Sub'
FROM category e
INNER JOIN category m ON m.category_id = e.parent_category_id
ORDER BY Parent
查询本身连接到同一张表,并得到下面给出的结果
结果
如何将SQL查询转换为HQL并
以标准json格式将上述图像之类的数据返回给用户?FetchSubCategory
import java.io.Serializable;
import java.util.Set;
import javax.persistence.*;
@Entity
@Table(name = "category")
public class FetchSubCategory implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private Integer categoryId;
@Column(name = "category_name")
private String categoryName;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "parent_category_id")
private FetchSubCategory parent;
@OneToMany(mappedBy = "parent")
private Set<FetchSubCategory> subCategory;
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public FetchSubCategory getParent() {
return parent;
}
public void setParent(FetchSubCategory parent) {
this.parent = parent;
}
public Set<FetchSubCategory> getSubCategory() {
return subCategory;
}
public void setSubCategory(Set<FetchSubCategory> subCategory) {
this.subCategory = subCategory;
}
}
Method
public Set<FetchSubCategory> fetchSubCategory() throws SQLException, ClassNotFoundException, IOException {
Set<FetchSubCategory> groupList = null;
try {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("SELECT m.categoryName AS 'Parent', e.categoryName AS 'Sub' FROM FetchSubCategory e INNER JOIN FetchSubCategory m ORDER BY Parent");
groupList = (Set<FetchSubCategory>) query.list();
} catch (Exception e) {
e.printStackTrace();
}
return groupList;
}
_任何人都可以纠正我的错误并告诉我如何获取上图所示的结果吗?
这些东西会解决你的问题
@Entity
@Table(name = "category")
public class FetchSubCategory implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "category_id")
private Integer categoryId;
@Column(name = "category_name")
private String categoryName;
@NotFound(action = NotFoundAction.IGNORE)
@ManyToOne
@JsonIgnore
@JoinColumn(name = "parent_category_id")
private FetchSubCategory mainCategory;
@JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)//Avoiding empty json arrays.objects
@OneToMany(mappedBy = "mainCategory", fetch = FetchType.EAGER)
private List<FetchSubCategory> subCategory;
public Integer getCategoryId() {
return categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
public FetchSubCategory getMainCategory() {
return mainCategory;
}
public void setMainCategory(FetchSubCategory mainCategory) {
this.mainCategory = mainCategory;
}
public List<FetchSubCategory> getSubCategory() {
return subCategory;
}
public void setSubCategory(List<FetchSubCategory> subCategory) {
this.subCategory = subCategory;
}
Get your sub categories
public List<FetchSubCategory> fetchSubCategory() throws SQLException, ClassNotFoundException, IOException {
List<FetchSubCategory> groupList = null;
try {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("select distinct e FROM FetchSubCategory e INNER JOIN e.subCategory m ORDER BY m.mainCategory");
groupList = query.list();
} catch (Exception e) {
e.printStackTrace();
}
return groupList;
}
我有一个表,其中前5个是主类别,其他是子类别。 我需要获取前5个主类别的子类别,以便找到sql查询 查询正在联接同一个表本身。我得到的结果如下所示 后果 如何将SQL查询转换为HQL,并以标准json格式向用户返回上述图像之类的数据? 获取子类别 方法 谁能纠正我的错误,告诉我如何获得像上面的图像的结果?
问题内容: 我有一张桌子 我想得到所有薪水高于A薪水的员工。我不想使用任何嵌套或子查询。在一次采访中有人问过,提示是使用自我加入。我真的不知道如何实现相同的目标。 问题答案: 使用自我加入
问题内容: 我正在练习 自我连接 ,这是我编写查询时不了解的事情。 我有桌子 雇员表包含三个记录。 最后一列manager_id是指使Ahmed和Tove成为Ola经理的第一列ID。 如果我这样写查询 结果使艾哈迈德和托夫经理。然而 正确无误,有人可以解释吗? 问题答案: 自联接就像内部联接,其中同一表的两个或更多实例通过公共数据类型的列/字段联接在一起。这种连接(内部连接)根据连接条件给出公共行
我有一个hibernate映射问题。我有以下两个DB表(不允许我更改DB): 我试图为这些DB表创建实体,但不知道如何映射表之间的连接。以下是我的尝试(但它是错误的): 可嵌入类 嵌入使用 困难在于我想在一个列和embeddedId列的一部分之间建立一个单一的连接。对这个问题有什么想法吗?(我正在使用Hibernate4.0.1)
问题内容: 我是Python装饰器的新手(哇,很棒的功能!),并且我很难使以下内容起作用,因为参数混杂在一起。 运行此命令时,我得到: 我做的那条线 问题 -显然,问题在于缓存器对象而不是Session实例,而该实例实际上没有属性。但是我找不到解决方法。 我已经考虑过但不能使用的解决方案 -我想到使decorator类返回一个函数而不是一个值(如本文的2.1节),以便在正确的上下文中进行评估,但这
除了传统的面向对象继承方式,还流行一种通过可重用组件创建类的方式,就是联合另一个简单类的代码。 你可能在Scala等语言里对mixins及其特性已经很熟悉了,但它在JavaScript中也是很流行的。 下面的代码演示了如何在TypeScript里使用混入。 后面我们还会解释这段代码是怎么工作的。 // Disposable Mixin class Disposable { isDispos