Hallo,
Ik ben bezig met een applicatie die gebruikt maakt van ibatis. Echter ik heb een klein probleem met het ophalen van gegevens.
Wat ik wil? Ik wil met 1 query uit 3 tables data halen. Nu is dat niet het probleem(Denk ik, de query werkt en geeft goede resultaten). De kleine versie van het ERD is:
Kaart --> Tocht --> Post
Waarbij een tocht 1 of meerdere posten bevat. Een kaart heeft ook maar 1 Tocht.
Ik heb de volgende sqlmap gefabriceerd:
Nu krijg ik dus mooie resultaten. De kaart krijg ik binnen. De Tocht wordt netjes aan de Kaart gekoppeld. En aan de tocht word 1 Post gekoppeld. Terwijl er meer posten in de DB staan, hier gaat het dus ook fout.
Ik heb al geprobeerd om andere soort joins te gebruiken, tevergeefs. Verder heb ik gekeken op de IBatis boards. Maar hier waren alleen mensen met het n plus 1 probleem. Ik heb een probleem met 1 plus n.
Heeft hier iemand een idee wat het probleem kan zijn waardoor ik maar 1 post in mijn lijst krijg terwijl ik er 6 moet krijgen?
Ik ben bezig met een applicatie die gebruikt maakt van ibatis. Echter ik heb een klein probleem met het ophalen van gegevens.
Wat ik wil? Ik wil met 1 query uit 3 tables data halen. Nu is dat niet het probleem(Denk ik, de query werkt en geeft goede resultaten). De kleine versie van het ERD is:
Kaart --> Tocht --> Post
Waarbij een tocht 1 of meerdere posten bevat. Een kaart heeft ook maar 1 Tocht.
Ik heb de volgende sqlmap gefabriceerd:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| <?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="Tocht" xmlns="http://ibatis.apache.org/mapping"> <alias> <typeAlias alias="Tocht" type="Webtv.BU.Tocht" /> <typeAlias alias="Post" type="Webtv.BU.Post" /> <typeAlias alias="Kaart" type="Webtv.BU.Kaart"/> </alias> <resultMaps> <resultMap id="tochtResult" class="Tocht"> <result column="tocht_id" property="ID"/> <result column="tocht_naam" property="Naam"/> <result column="tocht_datum" property="Datum"/> <result column="tocht_jaar" property="Jaar"/> <result column="tocht_prijs" property="Prijs"/> <result property="Posten" resultMapping="Tocht.postResult"/> </resultMap> <resultMap id="postResult" class="Post"> <result column="post_id" property="ID"/> <result column="post_naam" property="Naam"/> <result column="post_tocht" property="Tocht"/> </resultMap> <resultMap id="kaartResult" class="Kaart"> <result column="kaart_id" property="ID"/> <result column="kaart_rfid" property="RFID"/> <result property="Tocht" resultMapping="Tocht.tochtResult"/> <!-- <result property="Deelnemer" resultMapping="Deelnemer.DeelnemerResult"/> --> </resultMap> </resultMaps> <statements> <select id="selectTochten" resultMap="tochtResult"> SELECT * FROM Tocht T LEFT OUTER JOIN Post P ON P.post_tocht = T.tocht_id </select> <select id="selectTochtById" parameterClass="int" resultMap="tochtResult"> SELECT * FROM Tocht T LEFT OUTER JOIN Post P ON P.post_tocht = T.tocht_id WHERE tocht_id = #value# </select> <select id="selectTochtByNaam" parameterClass="string" resultMap="tochtResult"> SELECT * FROM Tocht T LEFT OUTER JOIN Post P ON P.post_tocht = T.tocht_id WHERE tocht_naam = #value# </select> <select id="getPostenByTocht" parameterClass="int" resultMap="postResult"> SELECT * FROM Post WHERE post_tocht = #value# </select> <select id="selectKaart" parameterClass="int" resultMap="kaartResult"> SELECT * FROM Kaart K INNER JOIN Tocht T ON T.tocht_id = K.kaart_tocht INNER JOIN Post P ON P.post_tocht = T.tocht_id WHERE kaart_rfid = #value# </select> </statements> </sqlMap> |
Nu krijg ik dus mooie resultaten. De kaart krijg ik binnen. De Tocht wordt netjes aan de Kaart gekoppeld. En aan de tocht word 1 Post gekoppeld. Terwijl er meer posten in de DB staan, hier gaat het dus ook fout.
Ik heb al geprobeerd om andere soort joins te gebruiken, tevergeefs. Verder heb ik gekeken op de IBatis boards. Maar hier waren alleen mensen met het n plus 1 probleem. Ik heb een probleem met 1 plus n.
Heeft hier iemand een idee wat het probleem kan zijn waardoor ik maar 1 post in mijn lijst krijg terwijl ik er 6 moet krijgen?