如何使用Primefaces数据表跟踪代码并查看其他数据表?

时间:2014-12-12 13:42:34

标签: hibernate primefaces datatable

你好我是hibernate,Primefaces和JSF的新手。我有一个问题,我不知道如何继续代码。 我在计算机中有一个带有firebird的数据库,我用jdbc.properties连接并在index.xhtml中带有primefaces的数据表中显示它。有用。 我有EmpBean.java,Empresa.java,EmpresaDAO.java,EmpresaService.java。 现在我想在数据表中选择一行,当我按下按钮时,会转到其他带有其他数据表和数据的Web。它被称为Ldiario。我已经在Empresa.java和Ldiario.java中休眠了ManyToOne和OneToMany,但我如何访问Ldiario的数据,我必须制作LdiarioDAO,LDIarioService或它不是必要的?对不起我的英语,我正在学习它。

Empresa.java

@Entity
@Table(name = "empresas")
public class Empresa implements Serializable{

@Id 
@Column(name = "CLAVE")
@GeneratedValue private Integer CLAVE;


@OneToMany(mappedBy = "empresa")  
private Set<Ldiario> ldiarios;

Ldiario.java

@Entity
@Table(name = "LDIARIO2014")
public class Ldiario implements Serializable{


@Id 
@Column(name = "CLAVE")
@GeneratedValue private Integer CLAVE;  

@ManyToOne  
@JoinColumn (name = "clave_id") 
private Empresa empresa;

的index.xhtml

<h:head>
      <title>Lista con Java Server Faces</title>
   </h:head>
   <h:body> 

      <h:form id="form">
    <p:dataTable id="radioDT"  var="emp" value="#{empresaBean.getEmpresaList()}"  
                selection="#{empresaBean.selectedEmpresa}" rowKey="#{emp.CLAVE}">



    <f:facet name="header">
            Lista de Empresas
         </f:facet>
         <p:column selectionMode="single" style="width:16px;text-align:center"/>         
      <p:column headerText="Id">
       <h:outputText value="#{emp.CLAVE}" />
       </p:column>

         <p:column headerText="Nombre Empresa">
       <h:outputText value="#{emp.NOMBRE}" />
       </p:column>

         <p:column headerText="AÑO">
       <h:outputText value="#{emp.EJERCICIO}" />
       </p:column>

       <!-- "#{empresaBean.selectedEmpresa}" -->
<f:facet name="footer">

    <p:commandButton action="#{empresaBean.View}" value="Seleccionar" title="Ir Menu" rowKey="#{emp.CLAVE}" >
 <f:setPropertyActionListener target="#{empresaBean.empresa}" value="#{empresaBean.selectedEmpresa}" />
</p:commandButton>

    <p:commandButton process="radioDT" update=":form:displaySingle"  icon="ui-icon-search" value="View"  oncomplete="PF('empresaDialog').show()" />
.
.
.

diario.xhtml

 <p:dataTable   var="emp" value="#{empresaBean.getEmpresaList()}"  
                selection="#{empresaBean.selectedEmpresa}" rowKey="#{emp.CLAVE}">

如果我在第二个数据库中有empresaBean.getEmpresaList()可以访问数据Ldiario?怎么样?非常感谢。

1 个答案:

答案 0 :(得分:0)

这不是与Primefaces密切相关的问题,您应该检查您的架构。

您应该将中间另一层放在中间,并将您的休眠数据模型(DAO)转换为控制器层中的DTO(数据传输对象)(我们将讨论M V C模式)。有关Java Converting Classes的更多信息,请参阅。 这不是一个好的做法,直接显示你的DAO来查看图层并对其进行操作。 与DAO相反,DTO是实现java.io.Serializable的轻量级对象,它只包含getter和setter,并且它们不包含任何逻辑,并且它们非常适合传输数据。

这样,数据库所在的位置并不重要,数据库可能不存在。或者您可以决定使用其他数据提供程序(例如Web服务,xml或NOSQL DB)更改它,而不对视图层进行任何更改。每个DTO对象可以由来自不同数据源的数据组成。