Tôi có lớp Entitly đơn giản với các trường @EmbeddedId
(Integer
và String
trong lớp riêng biệt). Và tôi sử dụng dữ liệu Spring (org.springframework.data.jpa.repository.JpaRepository
) để truy cập cơ sở dữ liệu (MySql), với Id bình thường các truy vấn đang hoạt động tốt, cả hai được tạo ra bởi Spring và những người thân đã viết. Với số EmbeddedId
tôi đã không quản lý để tạo truy vấn chính xác. Những gì tôi muốn làm là chọn tất cả các id (một trong các lĩnh vực của embeddedId mà một số điều kiện xảy ra) Ở đây bạn có một số mẫu mã, có lẽ ai đó sẽ có một ý tưởng làm thế nào để giải quyết nó.
Các lớp thực thể:Sử dụng @EmbeddedId với JpaRepository
@Entity
@Table(name="table_name")
public class EntityClass {
@EmbeddedId
private EmbeddedIdClass id;
private String someField;
//rest of implemetation
}
lớp EmbeddedId:
@Embeddable
public class EmbeddedIdClass implements Serializable {
public EmbeddedIdClass(Long id, String language) {
super();
this.id = id;
this.language = language;
}
public UserAdTextId() {}
@Column(name="ad_id", nullable=false)
private Integer id;
@Column(name="language_code", nullable=false)
private String language;
//rest of implemetation
}
và kho:
@Transactional(readOnly=true)
public interface MyRepository extends JpaRepository<EntityClass, EmbeddedIdClass> {
@Query("select distinct ad_id from EntityClass where userId = :userId and (/*here the conditions*/)")
public Page<Integer> findUserAdsWithSearchString(@Param("userId") Integer userId, @Param("searchString") String searchString, Pageable page);
//rest of implemetation
}
tôi không tìm thấy bất kỳ tài liệu như thế nào để tạo ra các phương pháp hỗ trợ @EmbeddedId, tôi đã thử nhiều tên phương thức khác nhau, nhưng tôi luôn nhận được ngoại lệ từ trình phân tích cú pháp phương pháp.
Đúng vậy, tôi phải sử dụng tên trường và duyệt qua chúng, tuy nhiên tôi nhận được kết xuất sql với số đếm seelct (khác biệt ...) Số đếm từ đâu? kiểu trả về là Page hoặc Danh sách (Tôi đã thử cả hai ... –
Mat
Câu trả lời là ok, một vấn đề khác mà tôi có là có thể xem được ... có vẻ như các truy vấn có phân biệt hoặc nhóm không thể xử lý được ... :( – Mat