Ik zit hier met een Nhibernate probleem waar ik maar geen oplossing voor kan vinden.
Stel ik heb twee tabellen, zeg maar Customer and Order, beide tabellen hebben als primary key een
composite key dat dus bestaat uit de combinatie van twee kolommen.
Customer heeft als composite key kolom A en B.
Order heeft als composite key kolom A en C.
Nu tracht ik in Customer een bag te creeren die alle Order objecten mapt waar de waarde
in beide tabellen dezelfde is voor kolom A.
Hier is de Customer.hbm.xml
bij het uivoeren geeft Nhibernate mij telkens volgende foutmelding:
Foreign key (FK497BA9679EAD9D16:Order [A])) must have same number of columns as the referenced primary key (Customer [A, B])
Als ik de fout goed begrijp dan dien ik de bag aan te maken met de twee primary keys, maar aangezien tweede primary key (B voor Customer en C voor Order) niet gelijk zijn lijkt mij dit niet mogelijk?
Ik weet dat het gebruik van composite keys in combinatie met Nhibernate wordt afgewezen maar ik dit geval heb ik niet veel keus aangezien we een legacy database gebruiken zonder de mogelijkheid tot aanpassing.
Heeft iemand hier enige ervaring dit probleem ?
Stel ik heb twee tabellen, zeg maar Customer and Order, beide tabellen hebben als primary key een
composite key dat dus bestaat uit de combinatie van twee kolommen.
Customer heeft als composite key kolom A en B.
Order heeft als composite key kolom A en C.
Nu tracht ik in Customer een bag te creeren die alle Order objecten mapt waar de waarde
in beide tabellen dezelfde is voor kolom A.
Hier is de Customer.hbm.xml
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <class name="NHibernate.Customer, NHibernate" table="Customer"> <!-- Composite key (primary key consists of more than one field --> <composite-id> <key-property name="A" column="pkA"></key-property> <key-property name="B" column="pkB"></key-property> </composite-id> <!-- One-to-many mapping--> <bag name="OrderList" lazy="false"> <key> <column name="A"/> </key> <one-to-many class="Order"></one-to-many> </bag> </class> |
bij het uivoeren geeft Nhibernate mij telkens volgende foutmelding:
Foreign key (FK497BA9679EAD9D16:Order [A])) must have same number of columns as the referenced primary key (Customer [A, B])
Als ik de fout goed begrijp dan dien ik de bag aan te maken met de twee primary keys, maar aangezien tweede primary key (B voor Customer en C voor Order) niet gelijk zijn lijkt mij dit niet mogelijk?
Ik weet dat het gebruik van composite keys in combinatie met Nhibernate wordt afgewezen maar ik dit geval heb ik niet veel keus aangezien we een legacy database gebruiken zonder de mogelijkheid tot aanpassing.
Heeft iemand hier enige ervaring dit probleem ?
[ Voor 47% gewijzigd door jos707 op 28-10-2009 16:25 ]