![]() |
1
4
简短而悲伤的回答是:不是JPA API不能为您做这些。整个API或多或少都是基于乐观的原则构建的,即假设事情能够正常工作,并在发生并发修改时抛出异常。 如果经常发生这种情况,那么很可能还有其他组件(任何生成foo的组件?)这可能得益于创建threadsafe,可能是围绕query+create进行同步的替代方法。 |
![]() |
2
3
一些“黑客”需要考虑:
因此,您只能在相关的情况下获得锁。 |
![]() |
3
2
我认为您需要在“jpaQuery”中使用的字段上添加一个唯一的约束,这样数据库就不能使用该查询的约束中使用的相同条件创建重复的行。调用代码将需要捕获由于违反约束而产生的异常(理想情况下,它将是EntityExistsException,但在这种情况下规范不明确)。 |
![]() |
4
0
您确定需要多个实体经理吗?在类似的情况下,我只使用一个EntityManager和每个方法的简单锁对象:
编辑:好的,除了说它在我的应用程序中运行正常外,不能对性能做太多的事情,但是为了唯一性,请使用如下方法:
|
![]() |
TheCrunchyPotato · JPA查询找不到正确的构造函数 2 年前 |
![]() |
Maiko Kingma · hibernate何时加载映射关系 6 年前 |
![]() |
OOvic · 使用JoinTable实现多个关系中的JPQL查询 6 年前 |
![]() |
Jovan0042 · 在H2中持久化多个实体引发异常 6 年前 |
![]() |
Nemeth Attila · 如何编写多对多关联表的查询 6 年前 |