Wat ik nodig heb is een lijst van usergroupid's die bij een bepaalde user horen.
Hiervoor heb ik twee tabellen: UserOfGroup en CatalogUser
In CatalogUser staan de users met login gegevens, in UserOfGroup welke usergroup bij welke user hoort.
Er is nog een UserGroup tabel die enkel de verschillende usergroepen bevat.
De xml ziet er als volgt uit:
UserOfGroup
CatalogUser
Deze bevat veel meer mappings maar die laat ik vanwege de overzichtelijkheid even weg
Nu is er aan de UserOfGroup een composite id class gekoppeld.
In gewoon sql ziet het er als volgt uit:
select usergroupid from userofgroup where loginname = 'guest'
In HQL had ik hieraan gedacht:
Criteria criteria = session.createCriteria(UserOfGroup.class);
criteria.add(Expression.eq("id.catalogUser.loginName", "guest") );
rs = criteria.list();
of dit:
String query = "select UserOfGroup from UserOfGroup uog where uog.id.userGroup.catalogUser.loginName = '"+loginn+"' ";
Query q = session.createQuery(query);
rs = q.list();
Hierbij heb ik al vanallerlei varianten geprobeerd maar ik krijg geen resultaat.
De queries worden zonder foutmelding uitgevoerd maar het List object blijft leeg.
De gewone SQL query werkt wel en geeft het juiste resultaat.
Een select direct op de login naam is niet mogelijk bij het UserOfGroup object aangezien er geen getLoginName() methode bestaat.
Ergens heb ik het idee dat ik iets vergeet maar wat?
Hiervoor heb ik twee tabellen: UserOfGroup en CatalogUser
In CatalogUser staan de users met login gegevens, in UserOfGroup welke usergroup bij welke user hoort.
Er is nog een UserGroup tabel die enkel de verschillende usergroepen bevat.
De xml ziet er als volgt uit:
UserOfGroup
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.jcatalog.commons.hibernate.mapping.UserOfGroup" table="UserOfGroup"> <composite-id name="id" class="com.jcatalog.commons.hibernate.mapping.UserOfGroupCID"> <key-many-to-one column="LoginName" name="catalogUser" class="com.jcatalog.commons.hibernate.mapping.CatalogUser"/> <key-many-to-one column="UserGroupID" name="userGroup" class="com.jcatalog.commons.hibernate.mapping.UserGroup"/> </composite-id> <property column="CreatedBy" length="60" name="createdBy" type="java.lang.String"/> <property column="CreatedOn" length="23" name="createdOn" type="java.util.Date"/> <property column="ChangedBy" length="60" name="changedBy" type="java.lang.String"/> <property column="ChangedOn" length="23" name="changedOn" type="java.util.Date"/> </class> </hibernate-mapping> |
CatalogUser
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
| <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.jcatalog.commons.hibernate.mapping.CatalogUser" table="CatalogUser" polymorphism="implicit" dynamic-update="false" dynamic-insert="false" mutable="true" > <id name="loginName" column="LoginName" type="string" unsaved-value="null" > <generator class="assigned"> </generator> </id> </class> </hibernate-mapping> |
Deze bevat veel meer mappings maar die laat ik vanwege de overzichtelijkheid even weg
Nu is er aan de UserOfGroup een composite id class gekoppeld.
Java:
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
| package com.jcatalog.commons.hibernate.mapping; import java.util.Date; import org.apache.commons.lang.builder.*; public class UserOfGroup { public UserOfGroup() { } public UserOfGroup(UserOfGroupCID id) { this.id = id; } public UserOfGroup(UserOfGroupCID id, String createdBy, Date createdOn, String changedBy, Date changedOn) { this.id = id; this.createdBy = createdBy; this.createdOn = createdOn; this.changedBy = changedBy; this.changedOn = changedOn; } public UserOfGroupCID getId() { return id; } public void setId(UserOfGroupCID id) { this.id = id; } /* stuk weg geknipt */ private UserOfGroupCID id; private String createdBy; private Date createdOn; private String changedBy; private Date changedOn; } |
In gewoon sql ziet het er als volgt uit:
select usergroupid from userofgroup where loginname = 'guest'
In HQL had ik hieraan gedacht:
Criteria criteria = session.createCriteria(UserOfGroup.class);
criteria.add(Expression.eq("id.catalogUser.loginName", "guest") );
rs = criteria.list();
of dit:
String query = "select UserOfGroup from UserOfGroup uog where uog.id.userGroup.catalogUser.loginName = '"+loginn+"' ";
Query q = session.createQuery(query);
rs = q.list();
Hierbij heb ik al vanallerlei varianten geprobeerd maar ik krijg geen resultaat.
De queries worden zonder foutmelding uitgevoerd maar het List object blijft leeg.
De gewone SQL query werkt wel en geeft het juiste resultaat.
Een select direct op de login naam is niet mogelijk bij het UserOfGroup object aangezien er geen getLoginName() methode bestaat.
Ergens heb ik het idee dat ik iets vergeet maar wat?
[ Voor 12% gewijzigd door rvrbtcpt op 27-02-2006 14:48 ]