我如何在 Spring Data Hibernate 的关系表中使用 findBy

nai*_*eem 6 java spring hibernate spring-data spring-data-jpa

我附上了我的表数据的快照。表名称是orderdetail

我想获取有关客户的数据。就像我的例子一样,数据应该基于PurchasedBy.

@Entity
public class OrderDetail {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne
    @JoinColumn(name="purchased_By")
    private User purchasedBy;
Run Code Online (Sandbox Code Playgroud)

OrderDetailDao我正在尝试在存储库中使用以下查询

List<OrderDetail> findByPurchasedBy(User user);
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Caused by: java.lang.IllegalArgumentException: Unable to locate Attribute  with the the given name [purchasedBy] on this ManagedType [com.example.Domain.OrderDetail]
Run Code Online (Sandbox Code Playgroud)

编辑摘要 > 当我使用findAll()并返回 json 时,该purchasedBy部分如下所示:

  "purchasedBy":{  
         "id":15,
         "email":"admin@gmail.com",
         "password":"$2a$10$jj41EbJZTOBfbKdJ6wAdx.rdQq8qU3OqoSzS5mvDVaiL33G1U4pPC",
         "name":"admin",
         "lastName":"admin",
         "active":1,
         "roleselected":null,
         "roles":[  
            {  
               "id":1,
               "role":"admin",
               "users":[  

               ],
               "new":false
            }
         ],
         "new":false
      }
   }
Run Code Online (Sandbox Code Playgroud)

订单明细表图片

Cho*_*ial 6

我认为使用自定义查询可能会解决这个问题:

@Query("select od from OrderDetail od where od.PurchasedBy.id = ?1") List<OrderDetail> findByPurchasedBy(Integer userId);