J'ai une classe qui contient un certain nombre de champs, et tous sont annotés par propriété. Pour l'un de ces champs, cependant, je veux présenter un double à la base de données et une date à l'utilisateur.Comment remplacer AccessType sur un seul champ
J'ai essayé un nombre quelconque de combinaisons ici, mais hbm2ddl (et donc, hibernate) continue de traiter la propriété dwell comme un horodatage. Comment dois-je l'implémenter sinon via des annotations similaires à ce que j'ai ci-dessous (c'est une version simplifiée de la classe en question)? Je considérerais déplacer toutes les annotations aux champs, mais la classe qui a besoin de ceci se trouve au sommet d'une hiérarchie d'héritage impliquant 25 autres classes et beaucoup, beaucoup d'annotations. Il faudrait la plus grande partie d'une journée pour déplacer toutes les annotations et cela semble être une façon inélégante de gérer cela.
@Entity
@AccessType("property")
public class Test {
private long id;
private Double dwell;
@Id
@Column(name = "ID", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
@NotNull
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@AccessType("field")
@Column(name = "DWELL_ID", precision = 10, scale = 3)
public Date getDwell() {
return new Date();
}
public void setDwell(Double dwell) {
this.dwell = dwell;
}
}
Je n'avais pas vraiment pensé à la norme de haricot. On dirait que la meilleure façon de le faire est avec un accesseur alternatif. Merci. – Bret