2010-07-05 23 views
0

J'ai un problème avec la façon dont hibernate/JavaBeans construit les noms de propriétés.Problème de capitalisation du nom de propriété Hibernate

Voici ma propriété.

private boolean aNumberFl; 

@Column(name = "aNumberFl", nullable = false) 
@Type(type = "yes_no") 
public boolean getANumberFl() 
{ 
    return aNumberFl; 
} 

public void setANumberFl(boolean var) 
{ 
    this.aNumberFl = var; 
} 

Tout va bien, sauf pour la mise en veille prolongée fait en interne pense mes noms de propriété est ANumberFl plutôt que aNumberFl. Les conventions JavaBean vérifient les deux premiers caractères de la propriété getter (après le get) et s'ils sont tous les deux des majuscules et ne sont pas décompactés pour obtenir le nom de la propriété. Cependant, cela est incompatible avec mon nom de champ qui a un minuscule. Tout cela est autorisé dans le monde JavaBean mais avec un champ appelé aNumberFl ou ANumberFl donnerait le même nom de getter. Cela signifie que lorsque la méthode get est la source, elle doit choisir l'une de l'autre et choisit cette dernière.

J'ai essayé de déplacer les annotations sur le terrain mais cela a causé d'autres problèmes que je ne vais pas aborder maintenant, et je ne suis pas sûr que ce soit une bonne idée de toute façon.

Est-il possible de surcharger le nom de la propriété par défaut que hibernate déduit du nom de la méthode getter?

Merci.

Répondre

1

Je conseille de renommer la propriété et lui donner un nom plus significatif

  • retirer la a - si elle est « A-Number », et vous avez un « B-Number », profitez propriété majuscule - moche, mais pourrait fonctionner.
  • Fl ne veut rien dire - étendre cette abréviation et tout ira bien.