Ошибка при получении записей из БД с использованием Hibernate - PullRequest
0 голосов
/ 07 июня 2018

У меня есть класс Entity, у которого первичный ключ имеет тип UUID.

Вот мой класс сущностей

@Entity
@Table(name = "LOG_IP", indexes = @Index(columnList = "IP"))
public class LOGIP {
    private UUID ID;
    private Long IP;
    private String COUNTRY;
    private String COUNTRYCODE;

    public LOGIP() {
    }

    public LOGIP(Long IP, String COUNTRY) {
        this.ID = UUID.nameUUIDFromBytes(String.valueOf(IP).getBytes());
        this.IP = IP;
        this.COUNTRY = COUNTRY;
    }

    @Id
    @Column(name = "ID", columnDefinition = "BINARY(16)", nullable = false)
    public UUID getID() {
        return ID;
    }

    public void setID(UUID ID) {
        this.ID = ID;
    }

    @Basic
    @Column(name = "IP")
    public Long getIP() {
        return IP;
    }

    public void setIP(Long IP) {
        this.IP = IP;
    }

    @Basic
    @Column(name = "COUNTRY")
    public String getCOUNTRY() {
        return COUNTRY;
    }

    public void setCOUNTRY(String COUNTRY) {
        this.COUNTRY = COUNTRY;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        LOGIP logip = (LOGIP) o;
        return Objects.equals(IP, logip.IP);
    }

    @Override
    public int hashCode() {
        return Objects.hash(IP);
    }
}

Я пытаюсь запросить данные по определенному идентификатору.Для определенных UUID я не могу получить данные.

Сначала я проверил, запросив все данные в БД, и проверил во время выполнения для конкретного UUID.И найденные записи извлекаются по запросу.Ниже приведен код для этого.Он печатает записи, связанные с этими тремя идентификаторами, упомянутыми ниже.

String name = LOGIP.class.getName();
Query<LOGIP> query = session.createQuery("from " + name , LOGIP.class);
List<LOGIP> list = query.list();

for (LOGIP logip : list) {
    if (logip.getID().equals(UUID.fromString("4247D43F-4EF3-33C1-A9BC-3902E18DF1F7")) || logip.getID().equals(UUID.fromString("73B0AFE5-A54D-3130-868E-A5D2040A8A20")) ||logip.getID().equals(UUID.fromString("F94F32A3-A6B2-34C5-8B18-23C84964AB20"))) {
           System.out.println("logip = " + logip);
       }
}

Если я пытаюсь выполнить запрос, задав параметры, запрос возвращает пустой список.

// This ID Returns record associated with it when queried by parameter
query.setParameter("id", UUID.fromString("4247D43F-4EF3-33C1-A9BC-3902E18DF1F7")); 

// Below ID's returns empty list when queried by parameter
query.setParameter("id", UUID.fromString("73B0AFE5-A54D-3130-868E-A5D2040A8A20")); 
query.setParameter("id", UUID.fromString("f94f32a3-a6b2-34c5-8b18-23c84964ab20"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...