3 votes

La mise à jour d'Ebean modifie le champ avec l'annotation @CreateTimestamp

J'ai une classe abstraite dont tous mes objets persistants s'étendent, voir ci-dessous. Les champs creationDate et modifiedDate sont remplis lorsque l'objet est initialement enregistré, je peux voir les dates dans la table. Le problème que je rencontre est que lorsque je mets à jour le même objet, les champs creationDate et modifiedDate sont également mis à jour, alors que je veux que seul le champ modifiedDate soit mis à jour.

J'utilise play 2.1 avec ebean.

La classe abstraite ...

@MappedSuperclass
public abstract class BasePersistableEntity extends Model  {
    @Temporal(TemporalType.TIMESTAMP)
    @Formats.DateTime(pattern="yyyy-MM-dd HH:mm:ss")
    @CreatedTimestamp
    protected Date creationDate;

    @Temporal(TemporalType.TIMESTAMP)
    @Formats.DateTime(pattern="yyyy-MM-dd HH:mm:ss")
    @UpdatedTimestamp
    @Version
    protected Date modifiedDate;

    public Date getCreationDate(){
        return creationDate;
    }

    public void setCreationDate(Date date){
        creationDate = date;
    }

    public Date getModifiedDate(){
        return modifiedDate;
    }

    public void setModifiedDate(Date date){
        modifiedDate = date;
    }
}

Merci.

1voto

SobiborTreblinka Points 565
@Temporal(TemporalType.TIMESTAMP)
@Formats.DateTime(pattern="yyyy-MM-dd HH:mm:ss")
@CreatedTimestamp
@Column(updatable=false)
protected Date creationDate;

Ajoutez simplement l'annotation @Column(updatable=false) au champ creationDate.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X