0

I'm triying to make a Many to Many relationship with hibernate.

I only really need to obtain the products of every EcoConfigPrioridadLead object, but the list is blank.

The call:

public List<EcoConfigPrioridadLead> getAllPrioridadesLead() {

    List<EcoConfigPrioridadLead> results = em.createNamedQuery("EcoConfigPrioridadLead.getAll").getResultList();

    return results;
}

The EcoConfigPrioridadLeads objects have the atributte List productos in blank [].

The @Entity EcoConfigPrioridadLead:

@Entity
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
@Table(name = "ECO_CONFIG_PRIORIDAD_LEAD", schema="ECOMMERCE")
@NamedQueries({
    @NamedQuery(name = "EcoConfigPrioridadLead.getAll", 
        query = "FROM EcoConfigPrioridadLead p WHERE p.deleted = false"),

    @NamedQuery(name = "EcoConfigPrioridadLead.getOne", query = "FROM EcoConfigPrioridadLead AS p where p.configIdPk = :configIdPk and p.deleted = 0"),
    @NamedQuery(name = "EcoConfigPrioridadLead.delete", query = "UPDATE EcoConfigPrioridadLead p set p.deleted = 1 where p.configIdPk = :configIdPk and p.deleted = 0"),
})

public class EcoConfigPrioridadLead implements Serializable {

    private static final long serialVersionUID = 5579999901294385893L;

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "ID_PK")
    private Long configIdPk;

    @ManyToOne
    @JoinColumn(name="CONTEXT_ID_FK", nullable = false)
    private EcoTMLeadContext ecoLeadContext;

    @Column(name = "DESCRIPTION", nullable = true)
    private String descripcion;

    @ManyToMany(targetEntity=EcoProduct.class, cascade={CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(schema="ECOMMERCE", name="ECO_PRIORIDAD_PRODUCTOS",
        joinColumns=@JoinColumn(name="PIORIDAD_ID_PK", referencedColumnName = "ID_PK"),
        inverseJoinColumns=@JoinColumn(name="PRODUCTO_EEP_PRODUCTCODE", referencedColumnName = "EEP_PRODUCTCODE"))
    private List<EcoProduct> productos;

    @Column(name="COD_PRODUCTO")
    private String codigosProductos;

    @Column(name = "HAS_PRICES", nullable = true)
    private String hasPrices;

    @Column(name="LAST_ENTE_PRIORIDAD")
    private String codigosLastEntePrioridad;

    @Column(name = "PRIORIDAD_INTERNA_VALUE", nullable = false)
    private Long prioridadInternaValue;

    @Column(name = "PRIORIDAD_LEAD_VALUE", nullable = false)
    private Long prioridadLeadValue;

    @Column(name = "DELETED", nullable = false)
    private boolean deleted;

    //getters and setters
}

The @Entity EcoProduct:

@Entity
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
@Table(name = "EN_ECO_PRODUCTS", schema="RPS")
@NamedQueries({
    @NamedQuery(name = "EcoProduct.getAll", query = "FROM EcoProduct ecoProd"),
})
public class EcoProduct implements Serializable {

    private static final long serialVersionUID = -8629423853963737817L;

    @Column(name = "EEP_ROCODE", nullable = false)
    private Long roCode;

    @Id
    @Column(name = "EEP_PRODUCTCODE")
    private Long productCode;

    @ManyToMany(
            cascade = {CascadeType.PERSIST, CascadeType.MERGE},
            mappedBy = "productos",
            targetEntity = EcoConfigPrioridadLead.class
        )
    private List<EcoConfigPrioridadLead> prioridad;

    @Column(name = "EEP_ROLABEL", nullable = false)
    private String roLabel;

    @Column(name = "EEP_ENABLED")
    private String enabled;

    @Column(name = "EEP_PRODUCTLINE", nullable = false)
    private Long productLine;

    @Column(name = "EEP_PRODUCTDESC", nullable = false)
    private String productDesc;

    @Column(name = "EEP_MAILINTERN", nullable = false)
    private String mailInterno;

    @Column(name = "EEP_COMPANYMAIL", nullable = true)
    private String companyMail;

    @Column(name = "EEP_COMPANYNAME", nullable = true)
    private String companyName;

    @Column(name = "EEP_COMPANYSNAKEMAIL", nullable = true)
    private String companySnakeMail;

    @Column(name = "EPP_FULLEMISIONRPS", nullable = true)
    private String fullEmisionRPS;

    //getters and setters
}

Tables:

ECOMMERCE.ECO_PRIORIDAD_PRODUCTOS

| PIORIDAD_ID_PK | PIORIDAD_ID_PK |
|----------------|----------------|
| 2              | 901            |
| 2              | 1500           |
| 3              | 901            |
| 3              | 901            |
| 3              | 1600           |
| 1              | 1600           |

RPS.EN_ECO_PRODUCTS

| EEP_ROCODE | EEP_PRODUCTCODE | EEP_ROLABEL | EEP_ENABLED | EEP_PRODUCTLINE | EEP_PRODUCTDESC | EEP_MAILINTERN   | EEP_COMPANYMAIL  | EEP_COMPANYNAME | EEP_COMPANYSNAKEMAIL | EPP_FULLEMISIONRPS |
|------------|-----------------|-------------|-------------|-----------------|-----------------|------------------|------------------|-----------------|----------------------|--------------------|
| 139        | 7859            | ro139       | 1           | 6969            | blabla          | example@mail.com | example@mail.com | company         | bla bla              |                    |
| 139        | 7856            | ro139       | 1           | 6969            | blabla          | example@mail.com | example@mail.com | company         | blabla               |                    |
| 2000       | 2273            | roLife      | 1           | 2273            | blabla          | example@mail.com | example@mail.com | company         | blablabla            |                    |
| 1600       | 8084            | roMotorapid | 1           | 3000            | bla bla         | example@mail.com | example@mail.com | company         | blablabla            |                    |

ECOMMERCE.ECO_CONFIG_PRIORIDAD_LEAD

| ID_PK | CONTEXT_ID_FK | DESCRIPTION | COD_PRODUCTO        | HAS_PRICES | LAST_ENTE_PRIORIDAD | PRIORIDAD_INTERNA_VALUE | PRIORIDAD_LEAD_VALUE | DELETED |
|-------|---------------|-------------|---------------------|------------|---------------------|-------------------------|----------------------|---------|
| 1     | 1             | bla bla bla | 2273,8933,1004      | S          | 8                   | 8                       | 8                    | 0       |
| 2     | 2             | bla bla bla | 7856,2273,8084,8920 | 9,9        | 9                   | 9                       | 0                    |         |
| 3     | 2             | bla bla bla | 901,1600            | N          | 8                   | 4                       | 2                    | 0       |

Hibernate version:

[org.hibernate.annotations.common.Version] (ServerService Thread Pool -- 48) HCANN000001: Hibernate Commons Annotations {4.0.1.Final-redhat-2} [org.hibernate.Version] (ServerService Thread Pool -- 48) HHH000412: Hibernate Core {4.2.14.SP1-redhat-1}

Ganon
  • 1
  • 2
  • You haven't posted the code snippet where your expectation is not fulfilled; otherwise the mapping seems to be ok. – ujulu Oct 19 '16 at 12:16
  • Thanks for your answer. I updated the question. – Ganon Oct 19 '16 at 12:35
  • I guess it has to do with the lazy loading; check my answer to [this question](http://stackoverflow.com/questions/39928888/hibernate-onetomany-fetchtype-lazy-is-not-working-unless-accessing-the-collectio/39929755#39929755). – ujulu Oct 19 '16 at 12:39
  • `System.out.println(results.get(0).getProductos());` print `[]` – Ganon Oct 19 '16 at 12:48

0 Answers0