Я столкнулся со следующей проблемой: CrudRepository
возвращает неверный результат, который не соответствует данным базы данных.Существует класс сущности:
@Entity
@Table(name = "ATTRIBUTE")
public class Attribute implements Serializable {
private static final long serialVersionUID = 7360594743377794716L;
*******
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID")
private Long id;
*******
@Column(name = "R_ORGANIZATION_ID")
private Long refOrganizationId;
@Column(name = "TEXT_CODE")
private String textCode;
*******
/**
getters, settrs, hashCode, etc
**/
}
И у меня есть соответствующий CrudRepository
public interface AttributeRepository
extends CrudRepository<Attribute, Long> {
*****
boolean existsByTextCodeAndRefOrganizationId(String textCode, Long organizationId);
*****
}
Проблема в том, что хранилище возвращает true
для данных, которых нет вDB.
Например, я передаю 'asdf' как textCode
и 0 как organizationId
.И я получаю true
, несмотря на то, что такого нет textCode
в БД.Вот автоматически сгенерированный код запроса:
select
TOP(?) attribute0_.id as col_0_0_
from
attribute attribute0_
where
attribute0_.text_code=?
and attribute0_.r_organization_id=?
12:00:24.805 [http-nio-8080-exec-6] TRACE o.h.t.d.s.BasicBinder - binding parameter [2] as [VARCHAR] - [asdf]
12:00:24.805 [http-nio-8080-exec-6] TRACE o.h.t.d.s.BasicBinder - binding parameter [3] as [BIGINT] - [0]
Но если я выполню запрос в любом диспетчере SQL, я получу 0 строк.Что это может быть?
Материал: MS SQL Server 2012, Java 1.8, spring-boot.version 1.5.4.RELEASE