The back cardinality (the side with the diamond in it) of GenericAction to Protocol (named childProtocol) should be 0...* rather than 0...1 . It doesn't affect the XSD because these aren't checked but will affect the database. This is something that probably should be fixed in the UML. Have discussed with Andy Jones and have modified the FuGE Hibernate STK accordingly.