如何将与字段关联的对象列表检索到实体类中?

2024-02-06

当我通过任何字段找到客户时,一切都很顺利,我得到了带有返回的全局对象的 JSON。

我正在编写代码来查找Customer由于他们lastName。客户实体有一个对象,其中的字段lastName被宣布。因此,我希望我的端点像第一种情况一样返回客户全局对象。

我已经进入我的邮递员状态 200 OK,但身体空了。有什么解决办法吗?谢谢

这是一个示例。 LastName 字段在 prefBillAddressUid 和 prefShipAddressUid 对象中声明

@Entity
@Table(name = "tcustomer")
public class Customer implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "pk_sequence",sequenceName = "sequence_tcustomer",initialValue = 1000, allocationSize = 100)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_sequence")
private Long uidpk;

@Column(name = "user_id", nullable=false)
private String userId;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "pref_bill_address_uid")
private CustomerAddress prefBillAddressUid;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "pref_ship_address_uid")
private CustomerAddress prefShipAddressUid;

...

//getters and setters 
//constructors

 }

我的存储库

  @Query(value = "SELECT c FROM CustomerAddress c WHERE c.lastName = :lastName")
  CustomerAddress findByLastName(   @Param("lastName") String lastName);

服务实施

    @Override
    public CustomerAddressDto findByLastName(String lastName) {
    CustomerAddress result = customerRepository.findByLastName(lastName);
    return customerAddressMapper.customerAddressToCustomerAddressDto(result);
}

这是我的资源

    @GetMapping(SEARCH_CUSTOMER_LAST_NAME_ENDPOINT)
@ResponseStatus(value = HttpStatus.OK)
@ApiResponses(value = {
        @ApiResponse(code = 200,  message = "OK", response = CustomerAddressDto.class),
        @ApiResponse(code = 500, message = "Unexpected error", response = CustomerAddressDto.class)
})
@Timed
public  ResponseEntity getCustomerByLastName ( @PathVariable String lastName) throws URISyntaxException {
    if (log.isDebugEnabled()){
        log.debug("[CustomerResource] GET {} : Retrieving Customer ({})", SEARCH_CUSTOMER_LAST_NAME_ENDPOINT, lastName);
    }

    CustomerAddressDto customerAddressDto = customerService.findByLastName(lastName);

    return Optional.ofNullable(customerAddressDto)
            .map(result->{
                if (log.isDebugEnabled()){
                    log.debug("[CustomerResource] Customer ({}) retrieved", result.getLastName());
                }
                return new ResponseEntity<>(HttpStatus.OK);
            })
            .orElse(new ResponseEntity(new ResponseError(HttpStatus.NOT_FOUND.getReasonPhrase(),
                    "The Customer with lastName " + lastName + " does not exists"), null,HttpStatus.NOT_FOUND)
            );
}

客户地址类

@Entity
@Table(name="taddress")
public class CustomerAddress implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "pk_sequence",sequenceName = "sequence_taddress",initialValue = 1000, allocationSize = 100)
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "pk_sequence")
private Long uidpk;

@Column(name = "last_name")
private String lastName;

@Column(name = "first_name")
private String firstName;

@Column(name = "phone_number")
private String phoneNumber;

@Column(name= "fax_number")
private String faxNumber;

@Column(name = "street_1")
private String street1;

@Column(name= "street_2")
private String street2;

@Column(name= "city")
private String city;

@Column(name= "sub_country")
private String subCountry;

@Column(name= "zip_postal_code")
private String zipPostalCode;

@Column(name= "country")
private String country;

@Column(name = "commercial")
private Boolean commercial;

@Column(name = "guid", nullable=false)
private String guid;

@Column(name = "customer_uid")
private Long customerUid;

@Column(name= "type")
private String type;

@Column(name = "organization")
private String organization;

...
//getters ans setters
}

首先,您无法从 CustomerRepository 返回 CustomerAddress。
一些替代方案是

  1. 根据姓氏检索 CustomerAddressCustomerRepository,你可以这样做

    Customer findByPrefBillAddressUid_LastName(String lastName);

spring-data 会制定查询,你不需要@Query。但请注意,返回类型如果Customer并不是CustomerAddress。因此,您将获得具有正确 customerAddress 的客户对象。

  1. 如果你想返回CustomerAddress,那么你需要创建CustomerAddressRepository并编写这样的方法

    CustomerAddress findByLastName(String lastName);

  2. Use 预测 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections创建一个这样的界面

     interface CustomerShort {
        CustomerAddress getPrefBillAddressUid();
    }
    

    然后你的 CustomerRepository 需要有这样的方法

    interface CustomerRepository extends CRUDRepository<Customer, UUID> {
    
      Collection<CustomerShort> findByPrefBillAddressUid_LastName(String lastName);
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将与字段关联的对象列表检索到实体类中? 的相关文章

随机推荐

  • 我在哪里可以获得 admob jar?

    我确信这是一个愚蠢的问题 但我在任何地方都找不到链接 他们的 wiki 只是说 将 AdMob Jar 文件复制到该 libs 目录中 但不知道从哪里得到它 有一种更简单的方法来获取 AdMob SDK 只需从 Google AdMob 广
  • AngularJS - $emit/$on 或范围继承哪个更好?

    假设我得到了以下 HTML 结构
  • 如何在 html 上设置processingJS?

    如何在 html 页面上运行处理 JS 脚本 有人可以给我发送一个测试 html 和一个辅助代码文件以供我了解吗 假设我想运行这个矩形 rect 50 50 50 50 要添加到 Kevin 的答案中 如果您想使用带有 javascript
  • Maven发布更新政策

    我看到releases setting http maven apache org ref 3 2 2 maven settings settings html class releases在maven设置中有一个updatePolicy
  • 语义 UI - 更改主题

    我无法在语义 UI 中选择主题 我尝试按照中提供的说明进行操作工作流程部分 http learnsemantic com guide expert html manual install文档的 文件位于examples 项目的文件夹对于测试
  • QML - 当我不接受鼠标按下事件时无法获取鼠标释放事件

    我想将 onPressed 事件分派给 QML 树中的后续对象 我已指示 mouse accepted false 和propagateCompositedEvents true 但我希望保持 onreleased 事件在顶级元素上工作 这
  • 在 Sass 中乘以百分比

    如何在 Sass 中以合理的方式将两个百分比相乘 例如 考虑以下声明 num1 50 num2 25 num3 num2 num1 Here num3休息 我可以写什么表达方式num3定义为12 5 弄清楚了 首先 您需要将其中一个百分比转
  • 使用API​​将数据插入sqlite3数据库

    我正在尝试将 Web API 中的数据插入到我的数据库中 我在 python 3 7 2 上使用 sqlite3 但找不到任何有关如何执行此操作的教程 到目前为止我所有的代码是 import requests sqlite3 databas
  • 设置 JavaScript 变量 = null,还是保留未定义?

    在 JavaScript 函数顶部声明变量时 最佳实践是将它们设置为 null 还是保留为 未定义 换句话说 什么情况下需要下面的每个选项 选项A var a null b null 选项B var a b 这取决于上下文 未定义 表示该值
  • htaccess / mod_expires - 缓存特定文件

    好吧 我检查了很多关于如何使用管理浏览器缓存的网站 htaccess文件 但我仍然不清楚 我想将特定文件缓存一个月 对于其余的 我希望它每次都能刷新 所以我尝试
  • Hibernate - 使用 all-delete-orphan 清除集合然后添加到它会导致 ConstraintViolationException

    我有这些实体 class Foo Set
  • 使用用户定义的注释生成编译器警告

    是否可以让编译器在遇到用户定义的注释时生成警告 类似的东西 Deprecated注解 Thanks 根据您最初的问题和评论 我假设您正在尝试执行以下操作 将代码标记为不完整 带有编译器警告 以便其他开发人员尚未使用它 稍后识别 IDE 中不
  • 在 python 端在 kivy 中分配 ids

    我正在使用猕猴桃 我想做的是拥有 想法 一个滑块和一个标签 其中包含网格布局中一行中滑块的当前值 现在获取布局很好 但让标签具有与滑块当前值相同的文本值是很棘手的 我尝试使用字符串连接来引用与其配对的滑块具有相同数字后缀的标签 我认为我遇到
  • 跨度文本填充增加跨度大小

    我有以下跨度 span style border solid width 100px hello world span 在我看来 跨度的总宽度是根据填充大小而增加的 有没有办法防止跨度大小增加并将文本填充到右侧 不知道你的 padding
  • Linux 中的缓冲区和高速缓冲存储器有什么区别?

    对我来说 不清楚这两个 Linux 内存概念之间有什么区别 buffer and cache 我已读完这个帖子 https stackoverflow com questions 3192579 buffer and cache diffe
  • 在Python中将数组的数组转换为json[重复]

    这个问题在这里已经有答案了 我有一个数组数组 它 是从数据库查询中获取的SQL炼金术我想做两件事 我想获取列的名称 或类似的名称 从表中选择全名 AS 姓名 我想将最终产品转换为 json 对象数组 以便我可以在前端使用它 我已经搜索了几个
  • 将 .net 方法公开为 Excel 函数?

    我有一组计算方法位于 Net DLL 中 我想让 Excel 2003 用户可以使用这些方法 以便他们可以在电子表格中使用它们 例如我的 net方法 public double CalculateSomethingReallyComplex
  • 查找二进制中类符号的来源

    我有一个有趣的问题 我收到的崩溃日志引用了我的应用程序中名为 NRURLProtocol 的类 特别是在文件 NRURLProtocol m 中 根据崩溃日志 该日志存在于我的应用程序中 而不是存在于 iOS 框架中 但是 我的项目中没有
  • VSCODE 笔记本 - 是否可以仅显示大纲中的 Markdown 标题?

    我使用 Markdown 标题在笔记本中导航 但我也倾向于制作大量 非标题 Markdown 笔记 两者都出现在大纲中 随着笔记本变大 找到正确的标题变得相当困难 有没有办法抑制大纲中显示的普通降价单元格 我关注了 github 和 at
  • 如何将与字段关联的对象列表检索到实体类中?

    当我通过任何字段找到客户时 一切都很顺利 我得到了带有返回的全局对象的 JSON 我正在编写代码来查找Customer由于他们lastName 客户实体有一个对象 其中的字段lastName被宣布 因此 我希望我的端点像第一种情况一样返回客