Hibernate 基于HQL查询结果动态生成javaFX TableView的列和行

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

我想根据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 {

         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
实例列表呢?