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