java – Dividir parcialmente cada fila de un datatable en primefaces


El problema que tengo es el siguiente:

Tengo un datatable donde se van a listar diferentes entidades de la clase Producto la cual consta internamente de varios campos de tipo simple y 2 objetos de tipo Proveedor. Categoria y TipoProveedor son enums.

public class Producto {
    
    private int idProducto;
    private String nombre;
    private Categoria categoria;
    private Proveedor proveedorUno;
    private Proveedor proveedorDos;
    
}


public class Proveedor {

    private int idProveedor;
    private TipoProveedor tipoProveedor;
    private String nombre;
    private BigDecimal precio;
    
}

Mi problema viene porque en cada fila del datatable se debe mostrar toda la información de forma que si viene un solo proveedor relleno se muestre normal pero si vienen los dos rellenos la parte de la información del proveedor se divida en 2 filas. Ejemplo:

|------------------------------------------------------------------|
| Nombre | Categoria | idProveedor | Nombre Proveedor    | precio  |
|------------------------------------------------------------------|
| DIN-A4 | Papel     | 10256       | Proveedor Manolito  | 10.59 € |
|        |           | 24747       | Proveedor Fulanito  | 10.75 € |
|------------------------------------------------------------------|
| DIN-A5 | Papel     | 10256       | Proveedor Menganito | 4.77 €  |
|------------------------------------------------------------------|
| DIN-A3 | Papel     | 44787       | Proveedor Saturnino | 14.77 € |
|------------------------------------------------------------------|

Había intentado hacerlo con un datatable así pero no queda exactamente como necesito:

<p:dataTable id="listadoProductos" widgetVar="listadoProductos" 
        value="#{listadoProductosBean.listadoProductos}" var="producto"
        emptyMessage="#{messages('tabla.VACIA')}">
        
        <p:column headerText="#{messages('listado.NOMBRE')}">
            <h:outputText value="#{producto.nombre}" />
        </p:column>
        <p:column headerText="#{messages('listado.CATEGORIA')}">
            <h:outputText value="#{producto.categoria.desc}" />
        </p:column>
        <p:column headerText="#{messages('listado.ID_PROVEEDOR')}" 
            rendered="#{producto.proveedorUno != null && producto.proveedorDos != null}">
            <p:panelGrid columns="1">
                <p:row>
                    <h:outputText value="#{producto.proveedorUno.idProveedor}" />
                </p:row>
                <p:row>
                    <h:outputText value="#{producto.proveedorDos.idProveedor}" />
                </p:row>
            </p:panelGrid>
            
        </p:column>
        <p:column headerText="#{messages('listado.ID_PROVEEDOR')}" 
            rendered="#{producto.proveedorUno != null && producto.proveedorDos == null}">
            <p:panelGrid columns="1">
                <p:row>
                    <h:outputText value="#{producto.proveedorUno.idProveedor}" />
                </p:row>
            </p:panelGrid>
            
        </p:column>
        <p:column headerText="#{messages('listado.ID_PROVEEDOR')}" 
            rendered="#{producto.proveedorUno == null && producto.proveedorDos != null}">
            <p:panelGrid columns="1">
                <p:row>
                    <h:outputText value="#{producto.proveedorDos.idProveedor}" />
                </p:row>
            </p:panelGrid>
            
        </p:column>
        
    </p:dataTable>

¿Es posible hacer lo que digo o es una utopia?

Mi versión de Primefaces es la 6.2 pero podría subir de versión si con ello puedo conseguir lo que deseo.

Gracias.

NOTA: A las malas me podría valer (aunque no es lo deseado) que aparezca la parte de los proveedores dividida en 2 aunque solo haya uno. Ejemplo:

|------------------------------------------------------------------|
| Nombre | Categoria | idProveedor | Nombre Proveedor    | precio  |
|------------------------------------------------------------------|
| DIN-A4 | Papel     | 10256       | Proveedor Manolito  | 10.59 € |
|        |           | 24747       | Proveedor Fulanito  | 10.75 € |
|------------------------------------------------------------------|
| DIN-A5 | Papel     | 10256       | Proveedor Menganito | 4.77 €  |
|        |           |             |                     |         |
|------------------------------------------------------------------|
| DIN-A3 | Papel     | 44787       | Proveedor Saturnino | 14.77 € |
|        |           |             |                     |         |
|------------------------------------------------------------------|