- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Micronaut 的新手,我一直在按照文档设置一个简单的 REST 应用程序。我想我会从一个简单的多对多关系开始。一切似乎都在运作。数据库表在启动时正确生成,并且端点返回可分页项目而不是嵌套的报价列表,即使我包含了一个急切的获取注释。我错过了什么? :-( 我不明白为什么。
这是我所拥有的...
项目 Controller :
@Get(value = "/{?args*}")
public Page<ItemDTO> list(@Valid Pageable args) {
return itemRepository.findAllOrderByName(Pageable.from(args.getNumber(), args.getSize(), args.getSort() ));
}
项目实体:
@Entity
@Table(name = "item")
public class Item {
public Item() {}
public Item(@NotNull String name) {
this.name = name;
}
public static ItemDTO toDTO(Item item) {
return new ItemDTO(item);
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Long version;
@NotNull
@Column(name = "name", nullable = false, unique = true)
private String name;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "item_offer",
joinColumns = @JoinColumn(name = "item_id"),
inverseJoinColumns = @JoinColumn(name = "offer_id"))
private Set<Offer> offers = new HashSet<>();
public Long getId() {
return id;
}
public String getName() {
return name;
}
public Set<Offer> getOffers() {
return offers;
}
public Item setOffers(Set<Offer> offers) {
this.offers = offers;
return this;
}
public Item addOffer(Offer offer) {
offers.add(offer);
offer.getItems().add(this);
return this;
}
}
项目 DTO:
@Introspected
public class ItemDTO {
@NotNull
private String name;
private Set<OfferDTO> offers = new HashSet<>();
public ItemDTO() {
}
public ItemDTO(String name) {
this.name = name;
}
public ItemDTO(Item item) {
this.name = item.getName();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
要约实体:
@Entity
@Table(name = "offer")
public class Offer {
public Offer() { }
public Offer(String name) {
this.name = name;
}
public static OfferDTO toDTO(Offer offer) {
return new OfferDTO(offer);
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Long version;
@Column(name = "name", nullable = false, unique = true)
private String name;
@ManyToMany(mappedBy = "offers", fetch = FetchType.EAGER)
private Set<Item> items = new HashSet<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Item> getItems() {
return items;
}
public void setItems(Set<Item> items) {
this.items = items;
}
}
提供 DTO:
@Introspected
public class OfferDTO {
@NotNull
private String name;
public OfferDTO() {
}
public OfferDTO(String name) {
this.name = name;
}
public OfferDTO(Offer offer) {
this.name = offer.getName();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
元素库:
import io.micronaut.data.model.Page;
import io.micronaut.data.model.Pageable;
import io.micronaut.data.repository.PageableRepository;
import knitwizzs.domains.Item;
import knitwizzs.dtos.ItemDTO;
public interface ItemRepository extends PageableRepository<Item, Long> {
Page<ItemDTO> findAllOrderByName(Pageable pageable);
}
这是我得到的输出:
{
"content": [
{
"name": "Item name one"
},
{
"name": "Item name two"
}
],
"pageable": {
"number": 0,
"sort": {
"sorted": false
},
"size": 100,
"offset": 0,
"sorted": false
},
"totalSize": 2,
"totalPages": 1,
"empty": false,
"size": 100,
"offset": 0,
"pageNumber": 0,
"numberOfElements": 2
}
所以没有嵌套商品的迹象?
就是这样。当我使用 Micronaut 数据时,我认为它会起作用。显然我错过了一些东西。
提前感谢您提供任何有用的信息。
最佳答案
@JsonIgnore
注释将从 JSON 输出中排除该字段,因为它在序列化期间被有效忽略。
因此您只需更改 ItemDTO 类中的字段:
@JsonIgnore
private Set<OfferDTO> offers = new HashSet<>();
到:
private Set<OfferDTO> offers = new HashSet<>();
关于java - 多对多关系不返回嵌套 DTO 的 Micronaut 数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61424706/
由于遗留原因,我们有很多代码位于存储过程下。类似于Spring data(@Procedure),micronaut中有没有调用存储过程的方法。我是否必须注入(inject) entityManage
我从 CLI 创建了一个新的 Micronaut 并进行了一些修改,然后意识到我可以从 cli 添加功能,但它似乎只是在调用 create-app 时的一个选项。 创建应用程序后,有没有办法从命令行添
我使用指南 send mail in micronaut 将 AWS SES API 集成到了我的 Micronaut Groovy 应用程序中如果我直接为属性赋值,我就可以发送邮件。 我想让它配置驱
寻求帮助以了解 Micronaut 2 的正确模式。 现在,所有 Controller 方法都默认在 NIO Eventloop 线程上运行。文档警告不要在此线程上执行任何阻塞调用,而是将其卸载到线程
我的客户应该从 Controller 收到一个文件。我不知道应该如何实现客户端。这是我的 Controller : @Get("/{databaseName}") MutableHttpRespons
如何为 micronaut 微服务设置上下文路径?我想做一些类似于 Spring Framework 中可用的操作,您可以在其中设置“server.servlet.contextPath”属性。我在
我正在开发一个 cli 应用程序,它可以接受一些选项:--info、--debug、--trace。我想使用参数来设置整个应用程序的日志记录级别。是否有捷径可寻?这是我到目前为止所尝试过的:
我正在评估 micronaut 并尝试移植一个小型应用程序作为试点项目。我遇到了处理数据源/存储库的障碍。 我有以下application.yml: micronaut: application:
我正在使用 Micronaut 的声明性 http 客户端从 API 检索数据。但是现在我需要在运行时动态更改服务器地址。这可能吗? 例子: @Client("${http.client.url}")
我需要在我的请求中将参数设置为不需要。 我试过: @Get(value = "/list/{username}") HttpResponse list(String username, @Quer
有没有办法配置 Micronaut 断路器,使其不针对特定的 HTTP 状态代码打开?例如,如果我查找某个项目但未找到该项目,则服务器可能会返回 HTTP 状态 404。这可能是一个完全有效的响应,我
我们一直在评估 Micronaut 框架,并希望使用 Apache Camel 库。我没有看到与 Apache Camel 的特定集成。 Apache Camel 库确实支持一组注释。 问题 我们可以
Micronaut 需要大约 75 秒来启动它的 hello-world 示例项目是否正常?这似乎与描述框架的方式非常不一致。我在具有良好规范的 MacBook Pro 上运行它,并且该项目是按照 M
我的 Controller 中有一个带有不同参数的 get 函数: myinterface.java : public interface MyInterface { @Get(value =
我不确定这是 Micronaut 还是 AWS Gateway 问题。任何帮助都会很棒。 我正在尝试使用 Micronaut 框架创建一个 Lambda 函数,该函数通过 AWS API 网关返回 p
我想利用 Micronaut 的“声明式 HTTP 客户端”功能。我很难理解如何传递动态 header 值,并且想知道这是否可能。考虑以下示例: package com.example; import
我对 Micronaut 很陌生,我只是想问,因为我无法从官方文档中得到任何答案 我的文件夹根目录中有一个 .env 文件。这是我的 .env PORT=8081 我试图访问 application.
假设我有 MotoDao 和 CarDao,它们都是 VehicleDao 接口(interface)的实现。 如何使用 micronuat 将两者都注入(inject)到一个类中? 我希望如下所示:
有谁知道如何配置 Eclipse IDE 以使用 micronaut-inject-java 注释处理器?我有一个指定 micronaut 注释处理器的 Gradle 构建文件,并且我的单元测试在 G
我正在使用 Micronaut、Micronaut Data、JPA、Postgres 和 GraalVM 开发一个新示例,如下所示 https://github.com/rmondejar/micr
我是一名优秀的程序员,十分优秀!