如何在具有复合PK的实体中使用“findBy”(Hibernate JPA)
我正在学习bootspring。
findByDate(int date);
过去工作,直到我将int Date
移动到内部类。
现在我可以保存新条目,但是我无法通过日期对它们进行检索
我需要改变什么?
@Transactional public interface ExpirationDAO extends JpaRepository { 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 }
抛出此exception:
org.springframework.data.mapping.PropertyReferenceException: No property date found for type ExpirationDTO!
您应该在存储库中包含嵌入式密钥类的名称而不是Long。 试试这个(未测试):
public interface ExpirationDAO extends JpaRepository { public List findByIdDate(int date); }
之后findBy
Id
是你的EmbeddedId
和Date
是embeddable类的属性。 还有一件事:如果你只使用嵌入式密钥的一部分,你不能指望只有一个结果……
您应该在存储库中包含嵌入式密钥类的名称,并添加下划线(_)
测试如下:
public interface ExpirationDAO extends JpaRepository { public List findByIdKey_Date(Date date); }
- 将Hibernate配置放在不同的位置
- 错误:无法创建PoolableConnectionFactory(isValid()返回false)
- @Transient不在hibernate中工作
- 我怎么能用Hibernate的“无法解析配置”错误?
- Hibernate在HQL中遇到“@”字符有困难
- Hibernate对Java 9的支持
- 从Hibernate 3迁移到4会降低启动速度
- 如何在Java Hibernate应用程序中修复java.lang.ArrayIndexOutOfBoundsException
- NamedEntityGraph – JPA / Hibernate抛出org.hibernate.loader.MultipleBagFetchException:无法同时获取多个包