Создание двух таблиц из одной сущности при весенней загрузке

0

означает, что мне нужно проследить исходную таблицу, аналогичную протоколированию таблицы со значениями и выполненными операциями

У меня есть сущность

 @Id
    @GeneratedValue
    private Long _id;
    private String description;
    private BigDecimal price;
    private String imageUrl;

Поэтому, независимо от того, какие операции, такие как добавление, изменяются, должны храниться в таблице журналов со значениями.

Направьте меня, чтобы достичь этого в весеннем ботинке.

Теги:
spring-boot

1 ответ

0

Вы можете использовать Spring JPA Auditing для решения этой проблемы.

Основной класс сущностей:

@Entity @EntityListeners(MyEntityListener.class)
public class MyEntity {

    @Id
    @GeneratedValue
    private Long _id;
    private String description;
    private BigDecimal price;
    private String imageUrl;
    // Getter Setter
}

Аудиторский класс слушателя:

@Component
public class MyEntityListener {

    @Autowired
    private LogEntryRepositoy logEntryRepositoy;

    @PrePersist
    @PreUpdate
    @PreRemove
    private void beforeAnyOperation(MyEntity myEntity) { 

        LogEntry entry = new LogEntry();
        //Your custom logic
        logEntryRepositoy.save(entry);
    }
}

Ваш объект журнала:

@Entity
public class LogEntry {

    @Id
    @GeneratedValue
    private Long _id;
    private String operation;
    //Add other properties

}

Ваш репозиторий журналов

@Repository
public interface LogEntryRepositoy extends JpaRepository<LogEntry, Long> {

}

Класс загрузки Spring:

@SpringBootApplication
@EnableJpaRepositories(considerNestedRepositories = true)
@EnableJpaAuditing
public class Application{
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

для дальнейшего чтения следуйте этой ссылке

Демо-проект GitHub

Если вы используете любую другую базу данных, отличную от h2, настройте ее в свойствах приложения.

Например, если вы используете MySQL:
spring.jpa.database=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/_your_data_name
spring.datasource.username=your_user_name
spring.datasource.password=your_password

И зависимость MySQL в pom.xml:

 <dependency>
       <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>6.0.6</version>
    </dependency>
  • 0
    сэр, спасибо за ответ и извините за поздний ответ. Я применил то же самое к своему модулю, но в итоге получаю только ошибку. То, что я сделал, я взял значения из html по сценарию, преобразовать как объект JSON и передать через контроллер, а затем в базу данных. Но значения не хранятся в БД и сообщение об ошибке только возвращается в ответ. Пожалуйста, помогите мне исправить это и что подразумевается под пользовательской логикой в вашем ответе. Поскольку я новичок, пожалуйста, игнорируйте, если я задаю какие-либо глупые вопросы.
  • 0
    Можете ли вы опубликовать ссылку или простой и полный пример с выводом, что нам нужно.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню