当前位置: 首页 > 面试题库 >

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

巫马正卿
2023-03-14
问题内容

我正在用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!

问题答案:

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

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

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



 类似资料:
  • 问题内容: 我的班级有两个子班级: 和。Child类具有单个PK,并且其上的映射有效。问题是我不知道如何将其映射到具有复合PK的ParentHobby类。 上级: 儿童: 家长爱好: @Entity @Table(name =“ PARENT_HOBBY”)公共类ParentHobby { ParentHobbyPK: 我在编译时遇到的异常是: 当子有复合主键时,如何在父实体中定义@OneToMa

  • 花了3天时间寻找解决方案,最后我来到这里寻求社区智慧。 我有如下的自我引用实体: 我通过手动运行它来确保请求不会返回数据库中的任何内容,但发现如果我将更改为,它将返回数据,因此,块中可能存在错误

  • 问题内容: 据我了解,每当我在JPA / Hibernate实体内的Long字段上使用@Id和@GeneratedValue时,我实际上是在使用代理键,考虑到我的非以下方式,我认为这是定义主键的一种非常不错的方法- 使用复合主键的良好经验,其中: 有不止一种业务-价值-行业组合成为唯一的PK 组合pk值在表详细信息中重复 无法更改该复合PK内的业务价值 我知道hibernate可以支持这两种类型的

  • 我有以下实体: 我第一次使用复合主键,所以我不知道它应该如何工作。问题可能来自定义。第二个参数应该表示ID。但是没有一个主键,而是有两个主键,所以我认为我应该将id类添加到id参数中,但这不起作用。如何使用带有CrudRepository的IdClass键保存具有复合主实体?

  • 我的类有两个子类:和。子类有一个单数PK,其上的映射起作用。问题是我不知道如何将它映射到ParentHobby类上,这个类有一个复合PK。 家长: @entity@table(name=“parent_hobby”)公共类ParentHobby{ ParentHobBypk: 我在编译时遇到的例外情况是: 当子实体具有复合主键时,如何在父实体中定义@OneTomany关系? 相似: @OneTom

  • 我有一个实体,它的复合主键由两个字段组成,其中一个也是复合外键的一部分。 背景:我有实体<代码>人员 、<代码>区域 和<代码>会话 。 与具有多对多关系,使用称为“和实体。 所以,我有,主键为(,)。本身是的外键。 也有一个字段。我希望(,)是的复合外键。 我的PersonSession代码: } 这看起来不错,它在数据库中创建了所有正确的关系。当我尝试插入个性化会话对象时,问题就出现了——ar