66
77import  org .hibernate .mapping .BasicValue ;
88import  org .hibernate .mapping .Component ;
9+ import  org .hibernate .mapping .KeyValue ;
910import  org .hibernate .mapping .List ;
1011import  org .hibernate .mapping .ManyToOne ;
1112import  org .hibernate .mapping .PersistentClass ;
@@ -29,6 +30,8 @@ void testXml(DomainModelScope domainModelScope) {
2930		final  PersistentClass  rootBinding  = domainModelScope .getDomainModel ().getEntityBinding ( Root .class .getName () );
3031		validateTags ( rootBinding .getProperty ( "tags"  ) );
3132		validateCategories ( rootBinding .getProperty ( "categories"  ) );
33+ 		validateAdmins ( rootBinding .getProperty ( "admins"  ) );
34+ 		validateAdmins2 ( rootBinding .getProperty ( "admins2"  ) );
3235	}
3336
3437	private  void  validateTags (Property  tags ) {
@@ -58,9 +61,6 @@ private void validateCategories(Property categories) {
5861			else  if  ( "owner" .equals ( subProperty .getName () ) ) {
5962				validateCategoryOwner ( subProperty  );
6063			}
61- 			else  if  ( "admins" .equals ( subProperty .getName () ) ) {
62- 				validateAdmins ( subProperty  );
63- 			}
6464			else  {
6565				fail ( "Unexpected Category property :"  + subProperty .getName () );
6666			}
@@ -80,16 +80,41 @@ private void validateCategoryOwner(Property owenerProperty) {
8080
8181	}
8282
83- 	private  void  validateAdmins (Property  adminsProperty ) {
84- 		assertThat (  adminsProperty . getColumns () ). hasSize (  1  ); 
85- 		assertThat ( adminsProperty .getColumns (). get (  0  ). getName () ). isEqualTo (  "root_fk"   );
83+ 	private  void  validateAdmins (Property  property ) {
84+ 		// mapped as many-to-many 
85+ 		assertThat ( property .getColumns () ). isEmpty ( );
8686
87- 		final  List  listValue  = (List ) adminsProperty .getValue ();
87+ 		final  List  listValue  = (List ) property .getValue ();
8888		assertThat ( listValue .getCollectionTable ().getName () ).isEqualTo ( "root_admins"  );
8989
90+ 		final  KeyValue  foreignKey  = listValue .getKey ();
91+ 		assertThat ( foreignKey .getColumns () ).hasSize ( 1  );
92+ 		assertThat ( foreignKey .getColumns ().get ( 0  ).getName () ).isEqualTo ( "root_fk"  );
93+ 
94+ 		final  BasicValue  indexValue  = (BasicValue ) listValue .getIndex ();
95+ 		assertThat ( indexValue .getColumns () ).hasSize ( 1  );
96+ 
97+ 		final  ManyToOne  element  = (ManyToOne ) listValue .getElement ();
98+ 		assertThat ( element .getReferencedEntityName () ).isEqualTo ( User .class .getName () );
99+ 	}
100+ 
101+ 	private  void  validateAdmins2 (Property  property ) {
102+ 		// mapped as one-to-many 
103+ 		assertThat ( property .getColumns () ).isEmpty ();
104+ 
105+ 		final  List  listValue  = (List ) property .getValue ();
106+ 		assertThat ( listValue .getColumns () ).isEmpty ();
107+ 		assertThat ( listValue .getCollectionTable ().getName () ).isEqualTo ( "root_admins2"  );
108+ 
109+ 		// key 
110+ 		final  KeyValue  foreignKey  = listValue .getKey ();
111+ 		assertThat ( foreignKey .getColumns () ).hasSize ( 1  );
112+ 		assertThat ( foreignKey .getColumns ().get ( 0  ).getName () ).isEqualTo ( "root_fk"  );
113+ 
90114		final  BasicValue  indexValue  = (BasicValue ) listValue .getIndex ();
91115		assertThat ( indexValue .getColumns () ).hasSize ( 1  );
92116
93117		final  ManyToOne  element  = (ManyToOne ) listValue .getElement ();
118+ 		assertThat ( element .getReferencedEntityName () ).isEqualTo ( User .class .getName () );
94119	}
95120}
0 commit comments