我正在使用
我希望findOne在我的Spring Data存储库中有一个带有悲观锁的findOne方法,该方法与已经提供的方法分开.
根据这个答案,我写道:
public interface RegistrationRepository extends CrudRepository<Registration, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select r from Registration r where r.id = ?1")
Registration findOnePessimistic(Long id);
}
Run Code Online (Sandbox Code Playgroud)
这几乎可行.
不幸的是,这不会刷新实体管理器缓存中我的实体的先前实例.我有两个并发请求更新我的注册状态
因此破坏了行为.
任何线索为什么@Lock没有开箱即用刷新实体经理?
更新
这是请求的示例代码:
public interface RegistrationRepository extends CrudRepository<Registration, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select r from registration_table r where r.id = ?1")
Registration findOnePessimistic(Long id);
}
public void RegistrationService {
@Transactional
public void …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu Trusty上使用C++ 11和g ++ 4.8.
考虑一下这个片段
class Parent {
public:
virtual ~Parent() = default;
virtual void f() = 0;
};
class Child: public Parent {
public:
void f(){}
};
Run Code Online (Sandbox Code Playgroud)
叫做使用
{
Child o;
o.f();
}
{
Parent * o = new Child;
delete o;
}
{
Child * o = new Child;
delete o;
}
Run Code Online (Sandbox Code Playgroud)
我使用gcov生成我的代码覆盖率报告.它报告带有符号的析构函数_ZN6ParentD0Ev永远不会被调用,而它_ZN6ParentD2Ev是.
回答构造函数符号的双重发射和GNU GCC(g ++):为什么它会生成多个dtors?报告_ZN6ParentD0Ev是删除构造函数.
有没有在Parent课堂上调用这个"删除析构函数"的情况?
附属问题:如果没有,有没有办法获得gcov/lcov代码覆盖工具(使用gcov与CMake/CDash一起使用的详细指南的回答?)在其报告中忽略该符号?
为什么它不起作用:
@Test
public void test() {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("test-pu");
EntityManager entityManager = entityManagerFactory.createEntityManager();
String id = "id";
long value = 1234L;
entityManager.getTransaction().begin();
FancyEntity fancyEntity = new FancyEntity(id);
entityManager.persist(fancyEntity);
int updateCount = entityManager.createQuery("update FancyEntity item set item.value = ?2 where item.id = ?1").setParameter(1, id).setParameter(2, value).executeUpdate();
assertEquals(1, updateCount);
FancyEntity checkResult = entityManager.find(FancyEntity.class, id);
assertEquals(1234L, checkResult.getValue()); // <- this assert fails
entityManager.getTransaction().commit();
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
public class FancyEntity {
@Id
private String id;
@Column
private long value;
public FancyEntity(String id) {
this.id …Run Code Online (Sandbox Code Playgroud) 我将SonarQube用于Java项目.
我想在使用库中给定的静态方法时发生违规.
有没有办法在UI中执行此操作,或者我应该使用https://github.com/SonarSource/sonar-custom-rules-examples/中所述的自定义Java代码?
java ×2
c++ ×1
c++11 ×1
caching ×1
destructor ×1
eclipselink ×1
gcov ×1
jpa ×1
lcov ×1
sonarqube ×1
spring ×1
spring-data ×1