Raj*_*jan 6 java mysql spring hibernate spring-data-jpa
我是Spring JPA和Repository的新手.我有一个包含大量字段的Auction类,其中一个字段是category.我想在CrudRepository中使用自定义方法按Category.name过滤结果;
@XmlRootElement 
@Entity(name="AUCTION")
public class Auction implements Serializable{
    private static final long serialVersionUID = 1L;
    @Id
    String id;
    @Column
    @Size(min=5, max=200)
    String title;
    String description;
    @OneToOne(cascade={CascadeType.ALL})
    Category category;
    ....}
类别
@Entity(name="CATEGORY")
//@NamedQuery(name="Category.findByName", query="select c from Category c where c.name=:name")
public class Category implements Serializable{
    private static final long serialVersionUID = 3L;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;
    private String name;
    public Category()
    {
    }
在拍卖存储库中,我添加了这样的方法
@Repository
public interface AuctionRepository extends CrudRepository<Auction, String>{
    @Query("from Auction a join a.category c where c.name=:categoryName")
    public Iterable<Auction> findByCategory(String categoryName);
}
它抛出一个错误.省略这种方法,一切正常.有人告诉我,这种类型的自定义方法可以在CrudRepository中声明,Spring将使用methodName和我们提供的查询提示来处理正确的事情.有人能指出我正确的方向吗?
Nit*_*ora 21
您需要@Param在方法变量名称中添加注释,以便可以在查询中引用它.你写的代码绝对没问题.如果您需要访问权限EntityManager,则需要自定义存储库.
@Query("from Auction a join a.category c where c.name=:categoryName")
public Iterable<Auction> findByCategory(@Param("categoryName") String categoryName);
@Param使用Java 8并进行编译时可以省略-parameters.
希望有所帮助.
提示:每当您发布问题时,也始终发布异常详细信息.它有助于理解问题.
| 归档时间: | 
 | 
| 查看次数: | 31132 次 | 
| 最近记录: |