das folgende SQL-Modell Gegeben:One Viele Beziehungen ist immer null
Two Views
VIEW PRODUCT
ID_PROPOSAL
ID_PRODUCT
VIEW PERSON
ID_ENTITY
ID_PRODUCT
NAME
JPA
@NamedQueries({
@NamedQuery(name = "Product.getByProposalId",
query = "SELECT ie "
+ "FROM Product ie "
+ "WHERE ie.idProposal = :proposalId ")
})
@Entity
Table(name = "PRODUCT")
public classe Product{
@Id
@Column(name = "ID_PRODUCT")
private Long idProduct;
@Column(name = "ID_PROPOSAL")
private Long idProposal;
@OneToMany(mappedBy="product")
List<Person> persons;
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons= persons;
}
}
@Entity
Table(name = "PERSON")
public classe Person{
@Id
@Column(name = "ID_ENTITY")
private Long idEntity;
@Column(name = "ID_PRODUCT")
private Long idProduct;
@ManyToOne
@JoinColumn(name = "ID_PRODUCT", insertable = false, updatable = false)
Product product;
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons= persons;
}
}
Query query = emanager.createNamedQuery("Product.getByProposalId");
query.setParameter("propostaId", proposalId);
return query.getResultList();
Es gibt die richtigen Ergebnisse Produkt, sondern für jedes Produkt hat alle Personen, die nicht zurückkehren, in der Log-Datei kann ich nicht jede Abfrage zu sehen die Sichtperson. Der Anwendungsserver ist websphere und die jpa-Implementierung ist openjpa1.2.3
Irgendwelche Ideen? Vielen Dank im Voraus Mit freundlichen Grüßen
Also, wenn Sie 'product.getPersons() aufrufen Größe()' auf einer der zurückgegebenen Produkte - Sie don‘ t irgendwelche Ergebnisse bekommen? Könnte nur faul laden sein. –
Haben Sie 'Lazy loading' als' 'wahr '' so konfiguriert? –
Wenn Sie lazy-loading sind, müssen Sie jeden Datensatz in der Ergebnisliste aufrufen und die Person mit "Product.getPersons(). Size()" initialisieren. – jr593