JPA Hibernate отображение отображения - запрос случайным образом выбрасывает ошибки - PullRequest
0 голосов
/ 19 сентября 2019

Итак, у меня есть простое представление, которое имеет 3 столбца: tag_id, product_id, is_direct_tag.Вот как я отобразил это:

@Entity
@Immutable
@JsonInclude(Include.NON_NULL)
@Table(name = "tag_to_product_complete", schema = "tags")
public class ProductTagComplete {

    @SuppressWarnings("FieldCanBeLocal")
    @EmbeddedId
    private ProductTagEntity id;

    @Column(name = "is_direct_tag", insertable = false, updatable = false)
    private boolean isDirectTag;

    public ProductTagEntity getId() {
        return id;
    }

    public boolean getIsDirectTag() {
        return isDirectTag;
    }
}

Вот также идентификатор:

@Embeddable
public class ProductTagEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    @Column(name = "tag_id")
    private long tagId;

    @Column(name = "product_id")
    private long productId;

    public ProductTagEntity() {
    }

    public ProductTagEntity(long productId, long tagId) {
        this.productId = productId;
        this.tagId = tagId;
    }

    public long getTagId() {
        return tagId;
    }

    public long getProductId() {
        return productId;
    }

}

Вот как я пытаюсь получить результаты из этого представления в хранилище:

@Transactional
public List<ProductTagComplete> getProductTagsByTagId(long tagId) {
    Session hibernateSession = entityManager.unwrap(Session.class);
    this.getRootCriteria(hibernateSession, ProductTagComplete.class);
    Predicate tagIdPredicate = criteriaBuilder.equal(root.get("id").get("tagId"), tagId);

    criteriaQuery = criteriaQuery.where(tagIdPredicate);
    return hibernateSession.createQuery( criteriaQuery ).getResultList();
}

Но вот проблема.Это работает большинство времени.Но иногда я случайно получаю следующие ошибки (я получаю все их за один запрос) для последней строки getResultList ():

org.hibernate.hql.internal.ast.InvalidPathException: Invalid path: 'generatedAlias0.id.tagId'

antlr.NoViableAltException: unexpected end of subtree

antlr.SemanticException: left-hand operand of a binary operator was null
...