18
18
package org .apache .jdo .tck .pc .companyAnnotatedJPA ;
19
19
20
20
import java .io .Serializable ;
21
+ import java .util .Collections ;
21
22
import java .util .Comparator ;
22
23
import java .util .Date ;
23
24
import java .util .HashMap ;
25
+ import java .util .HashSet ;
24
26
import java .util .Map ;
27
+ import java .util .Set ;
25
28
import javax .persistence .AttributeOverride ;
26
29
import javax .persistence .AttributeOverrides ;
27
30
import javax .persistence .Basic ;
28
31
import javax .persistence .CascadeType ;
32
+ import javax .persistence .CollectionTable ;
29
33
import javax .persistence .Column ;
30
34
import javax .persistence .DiscriminatorColumn ;
31
35
import javax .persistence .DiscriminatorType ;
36
+ import javax .persistence .ElementCollection ;
32
37
import javax .persistence .Embedded ;
33
38
import javax .persistence .Entity ;
34
39
import javax .persistence .FetchType ;
35
40
import javax .persistence .Id ;
36
41
import javax .persistence .IdClass ;
37
42
import javax .persistence .Inheritance ;
38
43
import javax .persistence .InheritanceType ;
44
+ import javax .persistence .JoinColumn ;
39
45
import javax .persistence .MapKey ;
40
46
import javax .persistence .OneToMany ;
41
47
import javax .persistence .Table ;
@@ -90,6 +96,10 @@ public class JPAAppPerson
90
96
@ MapKey (name = "type" )
91
97
private Map <String , JPAAppPhoneNumber > phoneNumbers = new HashMap <>();
92
98
99
+ @ ElementCollection
100
+ @ CollectionTable (name = "employee_languages" , joinColumns = @ JoinColumn (name = "EMPID" ))
101
+ private Set <String > languages = new HashSet <>();
102
+
93
103
/** This is the JDO-required no-args constructor. */
94
104
protected JPAAppPerson () {}
95
105
@@ -305,6 +315,24 @@ public void setPhoneNumbers(Map<String, String> phoneNumbers) {
305
315
this .phoneNumbers = (phoneNumbers != null ) ? convertString2Phone (phoneNumbers ) : null ;
306
316
}
307
317
318
+ /**
319
+ * Get the map of languages as an unmodifiable Set.
320
+ *
321
+ * @return The set of languages, as an unmodifiable set.
322
+ */
323
+ public Set <String > getLanguages () {
324
+ return Collections .unmodifiableSet (languages );
325
+ }
326
+
327
+ /**
328
+ * Set the languages set to be in this person.
329
+ *
330
+ * @param languages The map of phoneNumbers for this person.
331
+ */
332
+ public void setLanguages (Set <String > languages ) {
333
+ this .languages = new HashSet (languages );
334
+ }
335
+
308
336
/**
309
337
* Converts HashMap of String, String to HashMap of String, JPAAppPhoneNmber
310
338
*
@@ -360,6 +388,7 @@ protected String getFieldRepr() {
360
388
rc .append (", " ).append (firstname );
361
389
rc .append (", born " ).append (JDOCustomDateEditor .getDateRepr (birthdate ));
362
390
rc .append (", phone " ).append (convertPhone2String (phoneNumbers ));
391
+ rc .append (", languages " ).append (languages );
363
392
return rc .toString ();
364
393
}
365
394
@@ -385,7 +414,8 @@ public boolean deepCompareFields(Object other, EqualityHelper helper) {
385
414
& helper .deepEquals (
386
415
convertPhone2String (phoneNumbers ),
387
416
otherPerson .getPhoneNumbers (),
388
- where + ".phoneNumbers" );
417
+ where + ".phoneNumbers" )
418
+ & helper .deepEquals (languages , otherPerson .getLanguages (), where + ".languages" );
389
419
}
390
420
391
421
/**
0 commit comments