Глупый Вопрос о валидации в Java и временных переменных - PullRequest
0 голосов
/ 23 апреля 2020

Как установить временную переменную даты до ее обновления? Я хотел бы сравнить мою начальную дату, прежде чем она будет обновлена.

Обновление: больше кода

 * @hibernate.class table="t3sstations"
 * @hibernate.join name="rgnjoin" table="stnregions" optional="true"
 * @hibernate.join-key column="idstn"
 */
public class Station extends BaseSiteChildCFKObject implements Convertible, Comparable<Station> {
    private static final long serialVersionUID = -2056063261398467275L;
    protected final Log log = LogFactory.getLog(getClass());

    private Project stationProject;
    private Date project_startdate;
    private Date date_initial;

Таблица, которую он получает с SQL, используя hibernate. Он получает дату проекта из столбца project_startdate. Я хочу сравнить дату, с которой она изначально была, с новой / обновленной датой. Он обновляет одно и то же значение во всем классе.

    /**
     * @return
     * @hibernate.many-to-one column="idproject" not-null="false"
     * class="org.unavco.pbo.mdm.model.Project"
     */
    @Required
    public Project getStationProject() {
        return stationProject;
    }

    public void setStationProject(Project stationProject) {
        this.stationProject = stationProject;
    }


    /**
     * @return
     * @hibernate.property column="project_startdate"
     */

    public Date getProject_startdate() {
        return project_startdate;
    }


    public void setProject_startdate(Date project_startdate) {
            this.project_startdate = project_startdate;
    }
@AssertTrue
    private boolean validateProjectDate() {

        project_initialdate = new Date(project_startdate);

        if (project_startdate.before(this.project_initialdate)){
            return false;
        }

        if (project_startdate.before(this.stationProject.getStart_date()))  {

            return false;
        }

        if (this.stationProject.getEnd_date() != null) {
            if (this.project_startdate.after(this.stationProject.getEnd_date())) {
                return false;
            }
        }
        return true;
    }

1 Ответ

0 голосов
/ 07 мая 2020

Так что я не думаю, что нашел временный держатель значения, но я определил начальную дату как другую переменную внутри инициализатора. Размещая его здесь, я сохраняю дату до ее изменения и обновления через hibernate.

public Station() {
        super();
        Date date_initial = this.project_startdate;
    }

На вершине класса под названием Station. Оттуда я также определил получатель и установщик для начальной даты.

public Date getDate_initial(){
        return date_initial;
    }

    public void setDate_initial(Date date_initial) {
        this.date_initial = date_initial;
    }

Оттуда он точно сравнивает начальную дату с обновленной датой. Если это безопасно, то оно продолжает экономить. В противном случае он отображает сообщение об ошибке для пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...