JPA Spring 存储库 findAll() 返回一个空列表

时间:2021-06-19 15:16:45

标签: java spring spring-boot hibernate jpa

我正在尝试使用 JPA findAll 获取所有记录。如果我在终端中运行相同的查询,我会得到一些行,但不是通过 JPA。我在 stackoverflow 上尝试了其他答案,但没有任何效果。我尝试添加公共 getter 和 setter,尽管我认为这是由注释完成的。

模型类:


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@ToString
@Entity
@Table(name = "tea")
public class Product {
    @Id
    @GeneratedValue(generator = "prod_seq", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "prod_seq", sequenceName = "seq_prod", allocationSize = 1, initialValue = 1)
    @Column(name = "product_id")
    private int productId;
    private String name;
    @Column(name = "price_per_kg")
    private int pricePerKg;
    private String type;
    @Lob
    @Column(length = 2000)
    private String description;
    @Column(name = "image_url")
    private String imageUrl;
    private String category;

}

服务类:


import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.tea.exceptions.ProductNotFoundException;
import com.tea.models.Product;
import com.tea.repository.ProductRepository;
@Service
public class ProductServiceImpl implements ProductService{
    
    @Autowired
    ProductRepository productRepository;

    

    @Override
    public List<Product> getAll() throws ProductNotFoundException {
        return productRepository.findAll();
    }
}

编辑:添加存储库代码:


import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.tea.models.Product;



public interface ProductRepository extends JpaRepository<Product,Integer >{
    
    @Query("from Product where type like :type ")
    List<Product> findByType( String type);

    
    @Query("from Product where type =?2  and category= ?1")
    List<Product> findByCategoryAndType(String category, String type);


    @Query("from Product where category like :category")
    List<Product> findByCategory(String category);
}

1 个答案:

答案 0 :(得分:0)

我认为查询应该包含像 Product p 这样的表的别名,然后像 p.type 这样的条件。

相关问题