J'ai d?fini plusieurs cl?s (s?par?es par des virgules) au niveau de la d?finition d'un lien mais seule la premi?re est pris en compte dans la requ?te.
Cela ne me semble pas normal.
J'utilise une seule table pour g?n?rer deux classes ayant une relation entre elles :
j'ai une table Person :
CREATE TABLE PERSON(ID NUMERIC,NAME VARCHAR(50), FIRST_NAME VARCHAR(50), SEX VARCHAR(1), ADDRESS VARCHAR(100), CITY VARCHAR(50), ZP NUMERIC, COUNTRY VARCHAR(20), PRIMARY KEY(ID))
je cr??e deux mappes :
Person avec les champs ID, NAME, FIRST_NAME , ADDRESS, CITY,
ZP, COUNTRY
Address avec les champs ID, ADDRESS, CITY, ZP, COUNTRY
je cr?e un lien Person-Address :1-1 en d?finissant ID comme cl?
et un autre Address-Person :1-M avec ADDRESS, CITY, ZP, COUNTRY comme cl?.
fichier de lien :
# This is a navigation model resource bundle
# generated by THOUGHT INC CocoBase Enterprise OR
# Person(address)xAddress(lperson)
Person_address_AUTONAV = true
Person_address_TARGET_DELETE = true
Person_address_TARGET_INSERT = true
Person_address_TARGET_UPDATE = true
Person_address_KEY = ID
Person_address_TARGET_CLASS = Address
Person_address_TARGET_MAP = Address
Person_address_TARGET_KEY = ID
Person_address_TARGET_TYPE = 1_1
Person_address_TARGET_QUALIFIER = STD_LINK
Person_address_INVERSE_OF = Address_lperson
Address_lperson_AUTONAV = true
Address_lperson_TARGET_DELETE = false
Address_lperson_TARGET_INSERT = false
Address_lperson_TARGET_UPDATE = false
Address_lperson_KEY = ID
Address_lperson_TARGET_CLASS = Person
Address_lperson_TARGET_MAP = Person
Address_lperson_TARGET_KEY = ID
Address_lperson_TARGET_TYPE = 1_1
Address_lperson_TARGET_QUALIFIER = STD_LINK
Address_lperson_INVERSE_OF = Person_address
# Person(laddress)xAddress(person)
Person_laddress_AUTONAV = true
Person_laddress_TARGET_DELETE = false
Person_laddress_TARGET_INSERT = false
Person_laddress_TARGET_UPDATE = false
Person_laddress_KEY = CITY,ADDRESS,ZP,COUNTRY
Person_laddress_TARGET_CLASS = Address
Person_laddress_TARGET_MAP = Address
Person_laddress_TARGET_KEY = ADDRESS,CITY,ZP,COUNTRY
Person_laddress_TARGET_TYPE = M_1
Person_laddress_TARGET_QUALIFIER = STD_LINK
Person_laddress_INVERSE_OF = Address_person
Address_person_AUTONAV = true
Address_person_TARGET_DELETE = true
Address_person_TARGET_INSERT = true
Address_person_TARGET_UPDATE = true
Address_person_KEY = CITY,ADDRESS,ZP,COUNTRY
Address_person_TARGET_CLASS = Person
Address_person_TARGET_MAP = Person
Address_person_TARGET_KEY = ADDRESS,CITY,ZP,COUNTRY
Address_person_TARGET_TYPE = 1_M
Address_person_TARGET_QUALIFIER = STD_LINK
Address_person_INVERSE_OF = Person_laddress
# Defined links
Person_LINKS = address,laddress
Address_LINKS = lperson,person
Je g?n?re deux classes Person et Address en " Pure Java" et j'utilise les classes CocoProxyM et SampleProxyFactoryM.
Je r?cup?re une "Person" ? partir de son id, je lis son adresse (classe Address)et je recherche toutes les personnes ? la m?me adresse(m?me rue dans m?me ville et m?me pays). Or la condition where du select ne prend en compte que le premier champ d?fini comme cl? au niveau du lien (ici "ADDRESS") :
la requ?te est : main select PERSON . ID , PERSON . NAME , PERSON . FIRST_NAME , PERSON . ADDRESS , PERSON . CITY , PERSON . ZP , PERSON . COUNTRY from PERSON where PERSON . ADDRESS = rue de Paris
alors que je voudrais :
main select PERSON . ID , PERSON . NAME , PERSON . FIRST_NAME , PERSON . ADDRESS , PERSON . CITY , PERSON . ZP , PERSON . COUNTRY from PERSON where PERSON . ADDRESS = rue de Paris and PERSON.CITY=LAVAL and PERSON.ZP=53000 and PERSON.COUNTRY=FRANCE.
Merci de m'aider ? r?soudre ce probl?me.
|