Как ЗАБЛОКИРОВАТЬ ТАБЛИЦУ... делать что-то... РАЗБЛОКИРОВАТЬ ТАБЛИЦУ с помощью Spring Boot?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как ЗАБЛОКИРОВАТЬ ТАБЛИЦУ... делать что-то... РАЗБЛОКИРОВАТЬ ТАБЛИЦУ с помощью Spring Boot?

Сообщение Anonymous »

Идея состоит в том, чтобы расширить некоторые репозитории настраиваемыми функциями. Итак, я получил эту настройку, которая ДЕЙСТВИТЕЛЬНО работает!

Код: Выделить всё

@MappedSuperclass
abstract class MyBaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int = 0

var eid: Int = 0

}

interface MyRepository {

@Transactional
fun saveInsert(entity: T): Optional
}

open class MyRepositoryImpl : MyRepository {

@Autowired
private lateinit var entityManager: EntityManager

@Transactional
override fun saveInsert(entity: T): Optional {

// lock table
entityManager.createNativeQuery("LOCK TABLE myTable WRITE").executeUpdate()

// get current max EID
val result = entityManager.createNativeQuery("SELECT MAX(eid) FROM myTable LIMIT 1").singleResult as? Int ?: 0

// set entities EID with incremented result
entity.eid = result + 1

// test if the table is locked. sending manually 2-3 POST requests to REST
Thread.sleep(5000)

// save
entityManager.persist(entity)

// unlock
entityManager.createNativeQuery("UNLOCK TABLES").executeUpdate()

return Optional.of(entity)
}
}
Как бы мне сделать это более весенним?
Сначала я думал, что @Transactional будет выполнять БЛОКИРОВКУ и РАЗБЛОКИРОВКУ. Я попробовал пару дополнительных параметров и @Lock. Я просмотрел документацию и несколько руководств, но абстрактный технический английский зачастую нелегко понять. В конце концов я не получил работающего решения, поэтому вручную добавил блокировку таблиц, которая работает нормально. Тем не менее, я бы предпочел более весенний способ сделать это.

Подробнее здесь: https://stackoverflow.com/questions/565 ... pring-boot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»