2013-07-29 3 views
0

В приведенном ниже коде, когда я вызываю метод EntityADAO.findByGroupId (...), таблица EntityA заблокирована до завершения транзакции. Я не хочу этого. Как я могу избежать блокировки таблицы? Заранее спасибо.Запрос данных приводит к блокировке в таблице запросов

My database is SQL SERVER 2012. I am suing Hibernate 4.0.2. 

Ниже приведен фрагмент кода:

@Entity 
@Table(name = EntityA) 
    @NamedQueries ({ 
     @NamedQuery(name="EntityA.findByGroupId", query="SELECT p FROM EntityA p WHERE p.groupId= :groupId")})  
public class EntityA implements Serializable { 
    @Id 
    @Column(name = "EntityKey", nullable = false) 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long entityKey; 

    @Version 
    @Column(name = "Version", nullable = false) 
    private Long version = -1l; 

    @NotNull 
    @Column(name = "GroupId") 
    private Integer groupId; 
} 

@Repository("EntityA") 
@Scope(BeanDefinition.SCOPE_PROTOTYPE) 
public class EntityADAO extends AbstractJpaDAO<EntityA> { 

@PersistenceContext 
protected EntityManager em; 

    public EntityADAO() { 
     setClazz(EntityADAO.class); 
    } 

    **//A call to this method locks the table EntityA until the transaction is complete** 
    public List<EntityA> findByGroupId(int groupId) {    
     TypedQuery<EntityA> query = em.createNamedQuery("EntityA.findByGroupId", EntityA.class); 
     query.setParameter("groupId", groupId); 
     return query.getResultList();  
    } 
} 
+0

И что такое запрос результата? Каков уровень изоляции вашей транзакции? –

ответ

0

Если я не ошибаюсь SQL Server не приходит с версиями строк включена по умолчанию, поэтому я думаю, что именно поэтому вы видите это поведение ,

Что я подозреваю, когда вы выдаете запрос на выбор, и до того, как этот запрос завершится, вы выполните другой запрос на обновление, обновление должно дождаться завершения выбора.

Существует много способов решить эту проблему, причем один из них - enabling the row versioning. Другой вариант включает использование минимально ограничивающего уровня изоляции.

 Смежные вопросы

  • Нет связанных вопросов^_^