Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517

Spring (JPA): использование lastUpdateDate поля

20.12.2014, 01:17. Показов 1673. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу добавить поле lastUpdateDate в сущность и чтобы спринг за ним сам следил, а также не давал обновить сущность если клиент прислал запись где дата меньше текущей установленной. Тоесть такой себе аналог поля version, но в виде даты, ну или timestamp тоже подошёл бы. Ведь можно так?
Из того что я нашёл у спринга это аннотация @LastModifiedDate предназначенная для аудита, но и та у меня почему-то не работает так как вот в таком виде:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Entity
@XmlRootElement
@Table(name = "CUSTOMER", schema = "APP", catalog = "")
public class Customer {
 
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;
    @LastModifiedDate
    private Date lastModify;
}
EntityManager при merge абсолютно ничего с lastModify не делает. В доке упоминается что если вы хотите аудит то надо предоставить реализацию интерфейса для определения текущего пользователя (ну чтобы проставлять его в @UpdateUser), но меня ведь пользователь не интересует вовсе, мне бы только дату ...

Моя конфигурация:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@ComponentScan
@EnableAutoConfiguration
@EnableJpaAuditing
public class Application {
 
    @Bean
    public DataSource dataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("oracle.jdbc.pool.OracleDataSource");
        dataSource.setUrl("jdbc:oracle:thin:@//localhost:1521/XE");
        dataSource.setUsername( "app" );
        dataSource.setPassword( "app" );
        return dataSource;
    }
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2014, 01:17
Ответы с готовыми решениями:

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...

Jpa Spring ElementCollection
Подскажите пожалуйста, есть вот такая вот сущность package ru.self.examples.elentcollection; import javax.persistence.*; ...

QueryDSL и Spring Data JPA
Начал изучать querydsl. Делал по одному примеру. Там из такого запроса: http://localhost:8080/users?search=lastName:doe,age>25 ...

3
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.12.2014, 01:37
https://docs.jboss.org/hiberna... eners.html

Можно реализовать через ЕнтитиЛисенер и аннотацию @PrePersist
1
 Аватар для Gepar
1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
20.12.2014, 01:57  [ТС]
KEKCoGEN, ммм, ну в принципе подойдёт (учитывая что я это решение пока что хочу распространить всего-то на один объект), но как браковать когда собираются сохранить сущность где lastUpdateDate < текущего lastUpdateDate в базе, в идеале хотелось бы без моего ручного вмешательства У спринга же есть штука чтобы следить за версиями где поле в виде числа, может можно и на дату натравить?
Ну и я всё ещё хочу заставить работать спринговый аудит, может кто знает чего ему не хватает?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.12.2014, 14:22
Цитата Сообщение от Gepar Посмотреть сообщение
У спринга же есть штука чтобы следить за версиями где поле в виде числа
не пользовался ей. Впринципе можно один раз написать код в лисенере и кидать исключение. Таким образом будет работать для всех у кого есть этот лисенер.

Насчет аудита, я пытался его заставить работать в одном своем проекте, но он плохо работает с MsSQL из за его синтаксиса, поэтому я его бросил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2014, 14:22
Помогаю со студенческими работами здесь

Не запускается приложение Spring boot + jpa
Делаю тренировочное задание по созданию REST сервиса. Посмотрел много примеров в итоге делаю по этому: Github link pom.xml ...

Как развернуть spring-boot(jpa+web) в формате war на websphere?
Тестовое приложение на spring-boot-starter web+jpa собирается в war-файл. Этот war файл пытаюсь задеплоить war на websphere, но...

Выборка данных из нескольких таблиц используя Spring Data JPA Repository и преобразование в json
Всем привет! Сейчас мне данные отдаются в таком виде: Эти данные берутся из одной таблицы public_organisations. Но есть...

Spring Security и использование на сервере
Доброго времени суток. Собственно, начал постигать Java EE и Spring MVC сравнительно недавно, но уже пришлось делать проект общедоступным....

В Spring Boot у Entity не сериализуются id поле и сложные поля
Добрый день! Есть entity: @Entity @Table(name = &quot;item&quot;, catalog = &quot;gadgetsshop&quot; ) public class Item implements...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru