1

我正在使用 primefaces 3.4 和 JSF 2.0。我有 2 张桌子,一张是客户大师,另一张是案例大师。完成案例主条目后,将在案例主表中更新客户端 ID(案例主表中的外键)。我使用了与 primefaces 展示中给出的相同场景来自动完成。

用户只需输入一些字符,并根据该名称将被建议。用户选择其中一个,并在保存时只保存客户端 ID,以防 master。基本上我使用了转换器。

当用户添加案例条目时,它必须显示在数据表中。现在的问题是我必须显示客户端名称而不是客户端 ID。任何人都可以建议我如何在数据表中实现。

我试过以下

Created method in managed bean.   
value="#{caseUitility.clientName(case.id.clientID)}"
but failed.

严重:无法初始化代理 - 没有会话

org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话

任何人都可以建议我如何在数据表中实现。我应该为返回客户端名称的同一个客户端主服务器再创建一个转换器吗?还是别的什么?

我希望这对你们所有人来说都是非常愚蠢的事情,但我真的在这里堆积了一天半。

提前致谢....

4

3 回答 3

1

你有一个LazyInitializationException。您正在尝试访问未初始化的休眠生成代理。

通过急切地获取内容或使用Hibernate.initialize(proxy)在 Web 应用程序中访问它之前正确初始化代理。

于 2012-12-22T13:08:48.577 回答
0

似乎没有从数据库中查询您要在您的方法中访问的一个entity或一个。您可以通过在方法中从数据库中重新查询对象或相关实体来克服此问题。 检查您并找到引发异常的行,然后您可以找到延迟加载的. 如果没有看到您的方法和引发异常的行, 很难说更多的话。fieldclientName()clientclientName()
stacktraceentity
clientName()

于 2012-12-22T14:03:29.453 回答
0

以下是获取转换值的步骤,例如主题 ID 的主题名称:

  1. 在托管 Bean 类中创建获取主题名称的方法


public String getSubjectNameById(Integer subjectID)
    {
        String subjectName = getSubjectsService().getSubjectById(subjectID).getSubjectName();
        return subjectName;
    }


2.从数据表列中的xhtml类调用方法,如下所示:

<p:column sortBy="#{QuestionsMB.subjectNameById}">
     <f:facet name="header">
         <h:outputText value="Subject :" />
     </f:facet>
     <h:outputText value="#{QuestionsMB.getSubjectNameById(question.subjectId)}" />
</p:column>

我希望这有帮助 :)

于 2013-01-06T22:02:37.680 回答