当前位置: 首页 > 知识库问答 >
问题:

使用spring数据jpa中的联接查询多表列

瞿博易
2023-03-14

描述:

我有两张桌子,Shop_EmployeeShop_Employee_Type。我想在显示员工详细信息时直接显示typeName,但我不想配置这两个实体之间的关系(一到很多很多一个)。
因为这将加载列的所有Shop_Employee_Type值,但这些值对我来说毫无用处,所以我只需要 typeName Shop_Employee_Type。下面是我的代码,但它不起作用。

商店员工类型:

@Entity
@Data
//@DynamicUpdate
public class ShopEmployeeType {
    @Id
    private String typeId;
    private String shopId;
    private String typeName;
    private Integer typeStatus;
    private String typeDescription;
}

商店_员工:

@Entity
@Data
public class ShopEmployee {

    @Id
    private  String employeeId;
    private String shopId;
    private String typeId;
    private String name;
    private String code;
    private String phone;
    private Integer status;
    private String idcardNumber;
    private String image;
    //@Transient
    private String typeName;

    public ShopEmployee() {
    }
}

存储库:

@Query(value = "select u.*,t.type_name from shop_employee u inner join shop_employee_type t on u.type_id=t.type_id", nativeQuery = true)
List<ShopEmployee> findAllData();

这可以显示<code>类型名称@Transient,它可以成功保存,但当我查询实体Shop_Employee时,“typeName”的值为空。

共有1个答案

彭宜人
2023-03-14

您的查询应该返回两个ObjectShop_Employee和一个String,因此返回结果不应该是List

@Query(value = "select u.*, t.type_name from shop_employee ...", nativeQuery = true)
List<Object[]> findAllData();

然后,您可以使用以下方式获取商店员工

List<Object[]> list = findAllData();
for(Object[] obj : list){
   ShopEmployee shopEmployee = (ShopEmployee) obj[0];
   String type_name = (String) obj[1];
}

因此,在ShopEmployee实体中,您不需要使用:

//@Transient
//private String typeName;

 类似资料:
  • 我有3个实体在我的数据库。实体A具有主密钥PK-A,实体B具有主密钥PK-B,实体C具有主密钥PK-C。 实体A与实体B具有1对多关系,实体B与实体C具有1对多关系 我想在Spring Data JPA中基于PK-A(实际上是实体B中的外键)查询实体C。有可能吗? 但这行不通。还有什么建议我可以试试吗?

  • 我正在开发一个库API,我的目标是搜索一本书。目前这本书有两个我想搜索的有趣值:标题和简介(书背面的文本)。 底层数据库是MariaDB。 我构建了一个JPA查询: query和query2的内容相同。对于单词搜索,这种方法效果很好,但当两个或多个单词混合在简介和标题中时,这种方法就停止了。这是可以理解的。 我的第二次尝试是将每个术语拆分为字符串值列表。 这也不起作用。应用程序无法编译。 是否有方

  • 我很难启动服务器,因为它抱怨在查询中找不到继承的属性。 我的问题是,既然我试图将它移动到继承模型(联接),我如何在带注释的查询中引用继承的属性? (注意,该属性是私有可见性,在BaseContent中使用public getter/setter) 谢谢。

  • 我对JPA中的继承是新手。我不知道如何查询这样的内容: 让我们假设一个联接继承映射,其中a是一个具有'id'和'name'的实体。还有从A继承的实体A1和A2。A1提供字段'int1',A2提供字段'int2'

  • 我有一个Spring Boot应用程序,使用Spring Data JPA查询MySQL数据库。 我需要得到一份经过一些参数筛选的课程列表。 我通常使用语法