一尘不染

如何在具有复合PK的实体(Hibernate JPA)中使用“ findBy”

hibernate

我正在用bootspring学习。

findByDate(int date);一直工作到我int Date进入内部课程为止。

现在,我可以保存新条目,但不能通过Date检索它们

我需要更改什么?

@Transactional
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, Long> {

    public ExpirationDTO findByDate(int date);
}

@Embeddable
    public static class IdKey implements Serializable{
        @NotNull
        int date;
        @ManyToOne
        ProductDTO product;

        public IdKey(){
        }
         //setters and getters
    }
    @EmbeddedId
    private IdKey id;
    @NotNull
    int units;

    public ExpirationDTO(){     
    }
       //setters and getters
}

抛出此异常:

org.springframework.data.mapping.PropertyReferenceException: No property date found for type ExpirationDTO!

阅读 315

收藏
2020-06-20

共1个答案

一尘不染

您应该在存储库中包括嵌入式密钥类的名称,而不是Long。试试这个(未测试):

public interface ExpirationDAO extends JpaRepository<ExpirationDTO, IdKey> {
    public List<ExpirationDTO> findByIdDate(int date);
}

之后findBy
Id是您的EmbeddedIdDate是可嵌入类的属性。还有一件事:如果仅使用嵌入式密钥的一部分,那么就不会期望只有一个结果…

2020-06-20