基本设想是延长 ~>>>。 具有习惯功能的储存库。 因此,我看着这个机构的工作!
@MappedSuperclass
abstract class MyBaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int = 0
var eid: Int = 0
}
interface MyRepository<T : MyBaseEntity> {
@Transactional
fun saveInsert(entity: T): Optional<T>
}
open class MyRepositoryImpl<T : MyBaseEntity> : MyRepository<T> {
@Autowired
private lateinit var entityManager: EntityManager
@Transactional
override fun saveInsert(entity: T): Optional<T> {
// 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 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)
}
}
www.un.org/Depts/DGACM/index_spanish.htm 我怎样做这一更多的跳跃?
首先,我想到@transactional
将会使LOCK和UNLOCK陷入困境。 我尝试了另外两个参数和<代码>@。 洛克希德/编码。 我的确通过了一些理论,但抽象的技术英语往往不易理解。 最后,我没有找到一个可行的解决办法,因此,我人工添加了一张桌子,该桌子的开工是罚款的。 不过,更喜欢采取类似春季的办法。