Existe-t-il des déclarations contenues dans les spécifications JPA ou documents officiels sur certaines implémentations JPA qui décrivent le comportement quand nous annoter les méthodes de l'entité et lorsque nous annoter les champs de l'entité?La différence entre les champs et les méthodes annoter dans JPA (Hibernate)?
Il y a quelques heures à peine, j'ai rencontré un problème moche: j'utilise JPA (via Hibernate, mais sans rien de spécifique à Hybernate dans le code java) avec MS SQL Server. Et j'ai mis toutes les annotations sur les champs des entités (j'ai préféré ce style jusqu'à ce jour). Quand j'ai regardé le DB j'ai trouvé que toutes les colonnes de table qui devraient être des clés et qui devraient contenir quelques entiers (ids) avaient en fait le type varbinary(255, null)
et contenaient des hashes de quelque chose (je ne sais pas ce que c'était mais il ressemblait à un hachage MD5 typique).
La chose la plus frustrée est que l'application a fonctionné correctement. Mais de temps en temps (sur les mises à jour), j'ai reçu une exception MS SQL qui indiquait que j'essayais d'insérer des valeurs trop longues et que les données ne pouvaient pas être tronquées.
Éventuellement (à titre expérimental), j'ai supprimé toutes les annotations des champs d'entités et les ai toutes placées dans des méthodes. J'ai recréé DB et toutes les tables contenaient une colonne FK parfaite. Et ces colonnes stockent des entiers (ids, comme 1, 3, 4 ...). Alors, quelqu'un peut-il nous expliquer ce que c'était?
J'ai trouvé this SO thread et il est accepté la réponse dit que le moyen préféré est de mettre des annotations sur les champs. Au moins pour mon cas concret, je peux dire que ce n'est pas vrai.
Pour une raison quelconque, le lien vers le fil SO est incorrect. –
@Vineet Reynolds: Merci! maintenant c'est correct. – Roman
duplication possible de [Annotations Hibernate - Quel est le meilleur accès au domaine ou à la propriété?] (Http://stackoverflow.com/questions/594597/hibernate-annotations-which-is-better-field-or-property-access) –