无法在 Hibernate 中查询具有组合键的表

问题描述 投票:0回答:1

我有一个包含 userId 和listingId 的表。它们一起形成一个复合键。

钥匙本身:

@Data
@Embeddable
public class FavoriteListingId implements Serializable {
    @Column(name = "user_id", columnDefinition = "CHAR(36)")
    private String userId;

    @Column(name = "listing_id", columnDefinition = "CHAR(11)")
    private String listingId;
}

桌子:

@Getter
@Setter
@Entity
@Table(name = "favorite_listing")
public class FavoriteListingEntity {
    @EmbeddedId
    FavoriteListingId id;
}

存储库:

@Repository
public interface FavoriteListingRepository extends JpaRepository<FavoriteListingEntity, FavoriteListingId> {
    int countByListingId(String listingId);

    List<FavoriteListingEntity> findAllByUserId(String userId);
}

但是 findAllByUserId 不起作用。它给了我以下错误:

未找到类型FavoriteListingEntity的属性userId!

我在这里做错了什么?

java spring-boot hibernate jpa
1个回答
0
投票

您必须指定组合键所在的父属性的名称:countByIdListingId 和 findAllByIdUserId

@Repository
public interface FavoriteListingRepository extends JpaRepository<FavoriteListingEntity, FavoriteListingId> {
    
    int countByIdListingId(String listingId);

    List<FavoriteListingEntity> findAllByIdUserId(String userId);
}
© www.soinside.com 2019 - 2024. All rights reserved.