Hibernate 基于HQL查询结果动态生成javaFX TableView的列和行
我想根据HQL查询的结果填充JavaFXTableView。 我的模型课如下Hibernate 基于HQL查询结果动态生成javaFX TableView的列和行,hibernate,javafx,Hibernate,Javafx,我想根据HQL查询的结果填充JavaFXTableView。 我的模型课如下 package Entity; // Generated Nov 23, 2019 12:28:42 AM by Hibernate Tools 4.3.1 import java.util.Date; /** * Emp generated by hbm2java */ public class Emp implements java.io.Serializable
package Entity;
// Generated Nov 23, 2019 12:28:42 AM by Hibernate Tools 4.3.1
import java.util.Date;
/**
* Emp generated by hbm2java
*/
public class Emp implements java.io.Serializable {
private int id;
private String name;
private String designation;
private Date dob;
public Emp() {
}
public Emp(int id) {
this.id = id;
}
public Emp(int id, String name, String designation, Date dob) {
this.id = id;
this.name = name;
this.designation = designation;
this.dob = dob;
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getDesignation() {
return this.designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public Date getDob() {
return this.dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}
我想创建一个函数,根据HQL查询的结果用行和列填充TableView
@FXML
private TableView tbl;
Query myQry = session.createQuery("select e.id, e.name, e.designation, e.dob from Emp e where e.id<10");
populateTable(myQry);
public void populateTable(Query qry)
{
???
}
@FXML
私人桌面视图tbl;
Query myQry=session.createQuery("从Emp e中选择e.id、e.name、e.designation、e.dob,在Emp e中,e.idYou应该能够通过一两个循环使用info来实现您的目标。@Sedrick JDBC的解决方案在这里并不真正适用:数据库不是通过JDBC直接访问的,但这部分是由hibernate完成的。您不能简单地将hibernate查询转换为SQL查询,甚至如果你能做到这一点,那么打开与数据库的2个通信通道将是一种不好的做法。同样,重复的问题使“动态”测试失败标准。这里您可能需要使用来提取有关列的数据,并在cellValueFactory
s中检索属性。@kleopatra我认为最终的问题是如何读取HQL结果的元数据(即Hibernate等效于JDBC)。然后从该元数据动态创建和配置适当的TableColumn
实例。@Slaw可能是-但它基本上与fx;)无关,要学习的基础知识是hibernate/jpa。我无法提供帮助,因为我不知道如何在jpa/hibernate中获取或读取元数据,如果可能的话。然而,我之前的问题仍然是:你真的需要这个吗?由于您使用的是ORM,我很难相信您不知道所有可能显示的类型。换句话说,每个查询都应该有一个关联的类作为实体/结果。在您的问题中,您有Emp
,所有信息都可以提前获得。同样,既然您已经选择了每一列,为什么不更改查询以返回Emp
实例的列表呢?您应该能够通过一两个循环使用info来实现您的目标。@Sedrick JDBC的解决方案在这里并不真正适用:数据库不是通过JDBC直接访问的,但这部分是由hibernate完成的。您不能简单地将hibernate查询转换为SQL查询,即使您可以这样做,打开与db的两个通信通道也是不好的做法。重复问题也不符合“动态”标准。在这里,您可能需要使用来提取有关列的数据,并在cellValueFactory
s中检索属性。@kleopatra我认为最终的问题是如何读取HQL结果的元数据(即Hibernate等效于JDBC)。然后从该元数据动态创建和配置适当的TableColumn
实例。@Slaw可能是-但它基本上与fx;)无关要学习的基础是hibernate/jpa..我无法提供帮助,因为我不知道如何获取或读取jpa/hibernate中的元数据,如果可能的话。然而,我之前的问题仍然是:你真的需要这个吗?由于您使用的是ORM,我很难相信您不知道所有可能显示的类型。换句话说,每个查询都应该有一个关联的类作为实体/结果。在您的问题中,您有Emp
,所有信息都可以提前获得。同样,既然您已经选择了每一列,为什么不更改查询以返回Emp
实例列表呢?