BlazeDS ne sérialisera pas une propriété sauf si elle possède à la fois un getter et un setter. Cependant, plusieurs de mes propriétés Java sont en lecture seule. Par conséquent, je dois maintenant ajouter des setters pour soutenir le processus Unmarshalling. Si l'un des utilisateurs de ces objets de domaine commence à appeler ces setters eux-mêmes, il va casser la sémantique valeur-objet de ces choses et causer probablement toutes sortes de problèmes de système.Comment arrêter d'écrire des paramètres de propriété Java pour BlazeDS et JPA que je ne veux pas?
J'ai dû faire beaucoup de choses sur le passé pour supporter certains aspects de JPA et je n'ai jamais aimé ça. C'est parce que nous avons mis nos annotations JPA sur les propriétés plutôt que sur les champs privés (pour éviter un autre problème).
A part d'utiliser Javadoc pour m'avertir moi-même et les autres, que fait un programmeur?
Edit: Je dois ajouter que ces setters supplémentaires ne font PAS partie de l'interface publique que ces objets implémentent .... mais ils sont toujours là.
"C'est parce que nous avons mis nos annotations JPA sur les propriétés plutôt que sur les champs privés (pour éviter un autre problème)" - quel était l'autre problème? –
Le problème était les champs privés dans les superclasses mappées qui avaient utilisé des génériques Java dans leur type (par exemple 'private List myProp;'). Voir http://stackoverflow.com/questions/2808251/how-to-handle-jpa-annotations-for-a-pointer-to-a-generic-interface Ces déclarations ne prennent pas en charge les annotations JPA. –
HDave