Hibernate 如何使用对象的大小在datatable中动态添加列

Hibernate 如何使用对象的大小在datatable中动态添加列,hibernate,jsf,jpa,Hibernate,Jsf,Jpa,在我的项目中,我有一个国家类和语言类,它们之间有一对多关系。我必须根据登录用户显示所有语言。登录用户具有特定的国家/地区。使用会话: 我必须将登录用户放入会话 使用会话获取关联的国家/地区 我已经为登录用户编写了检索Country的查询,但我不知道如何将对象放入会话以及如何获取它 public UsersDetails getUserById(String loggedInUserEid) { UsersDetails user = null; try{ user =

在我的项目中,我有一个
国家
类和
语言
类,它们之间有
一对多
关系。我必须根据登录用户显示所有语言。登录用户具有特定的国家/地区。使用会话:

  • 我必须将登录用户放入会话
  • 使用会话获取关联的国家/地区
  • 我已经为登录用户编写了检索
    Country
    的查询,但我不知道如何将对象放入会话以及如何获取它

    public UsersDetails getUserById(String loggedInUserEid) {
    
        UsersDetails user = null;
        try{
    
        user = entityManager.find(UsersDetails.class, loggedInUserEid);
        if(user!=null){
            System.out.println("userList.get(0).getFirstName()::"+user.getFirstName());
        }
        }catch(EntityNotFoundException enfEx){
            System.out.println("LoggedIn User not found in DB");
        }catch(Exception e){
            e.printStackTrace();
        }
        System.out.println("UserDAOImpl.getUserById()::Exit");
        return (null!=user) ? user : null;
    }
    

    首先,我不确定上面的代码驻留在哪一层,这是JSF管理的bean还是什么

    如果它是一个JSF管理的bean,您可以创建一个用户类来存储您想要的信息,但是如果您只想在会话中保存UserDetails对象,您可以使用FacesContext这样做

    FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("userInfo", getUserById("someId"));
    
    您可以通过以下方式检索会话信息:

    (UsersDetails)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userInfo");