Hallo zusammen,
ich brache dringend eine Idee, warum ich bei dem Mapping unten ein Karthesisches Produkt bekomme.
Hier erstmal die DB-Struktur:
ER-Diagramm
Code:
+---+ +---+
| A |+--<| B |
+---+ +---+
Bei 4 Filter-Werten erwarte ich folgendes Ergebnis:
a1->b1, b2, b3
a2->b4, b5
a3-><empty>
a4->b1, b2, b3
Ich bekomme allerdings das hier:
a1->b1, b2, b3
a1->b1, b2, b3
a1->b1, b2, b3
a2->b4, b5
a2->b4, b5
a3-><empty>
a4->b1, b2, b3
a4->b1, b2, b3
a4->b1, b2, b3Das Mapping ...
um Daten aus der gegebenen DB-Struktur zu holen. Ich benötige die Daten nur
unidirektional, da es keine notwendigkeit gibt von B auf Daten der
Klasse A zuzugreifen
Code:
@Entity
public class A implements IofA {
@Id
private Long key1;
privtae Long searchValue;
@OneToMany(mappedBy = "key1", fetch = FetchType.EAGER)
private List<B> finance;
// further members, getter and setter
}
Code:
@Entity
@IdClass(value = B_PK.class)
public class B implements IofB {
/**
* part of the primary key.
* This value is the same an the PK of class A
*/
@Id
private Double key1;
@Id
private Short key2;
@Id
private Character key3;
// further member, getter and setter ...
}
Code:
/**
* definition of the composed PK of class B
*/
@Embeddable
public class B_PK implements Serializable {
@Id
private Double key1;
@Id
private Short key2;
@Id
private Character key3;
// getter and setter named exactly the same as in B
}
The repository ...Code:
/**
* The repository to gather data:
*/
public class Hibernate3_RiskRepository {
public List<IofA> findData(List<Long> searchvalues) {
LOG.debug("Filtered searchValues's are: " + searchvalues);
Criterion criterion = Restrictions.in("searchValue", searchvalues);
List<IofA> list = super.findByCriteria(criterion, (Order[]) null);
return list;
}
}
Kann jemand helfen?