问题标签 [specification-pattern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4549 浏览

spring-boot - 使用 Spring Boot JPA 标准规范和谓词连接 2 个表

我正在尝试创建一个标准来从 2 个表(UserDetail、Vehicle)中检索行。UserDetail 具有对 Vehicle 的引用。我的目标是在给定 UserDetail id 的情况下从两个表中检索指定字段的列表。在@Query 中很容易做到,但客户说这必须使用带有规范和谓词的标准进行编码以加入表。

我的@Query 是:

谁能帮我?我使用带有谓词的规范获取数据,因为需要给定查询

0 投票
0 回答
173 浏览

java - Swagger 未从运行时检测参数

我正在使用这个库https://github.com/tkaczmarzyk/specification-arg-resolver在 Spring Boot 中生成规范。问题是这个库在运行时生成它们,而 swagger 在编译时工作。Swagger 仅检测分页中使用的参数。任何想法如何解决这个问题?

代码:

解决方案: https ://github.com/swagger-api/swagger-core/wiki/annotations#apiimplicitparam-apiimplicitparams

0 投票
1 回答
1781 浏览

sql - 如何将规范模式与原始 sql 结合起来

我尝试使用 CQRS 以 DDD 方式实现一些应用程序。我使用 asp.net 核心应用程序,以及微软(在微服务书中)我使用 Mediatr。我想实现文章的过滤。为此,人们建议使用规范模式并将所有规范存储在域中(什么层应该包含 DDD 中的查询)。

但是如果我使用 dapper,我该如何处理解析表达式?使用 EF 不是问题,但使用原始 SQL 是。我认为将表达式树解析器和转换器实现为 SQL 是不值得的。更简单的方法是在 Domain 中存储一些 FilterModel,并通过在基础架构模型中遍历该模型来构建 SQL 或 SphinxQl。该解决方案是否符合 DDD 原则?我会很感激你的建议)

0 投票
1 回答
8624 浏览

jpa - .where 子句中的 JPA 规范和空参数

我写了两个规范,如果它们的参数为空,则返回空。

然后我创建了第三个,它将前面的与子句中的and运算符结合起来:where

现在,这是有趣的部分:

  • 如果ByLinea返回null,我会在解决子句时得到一个nullPointerExceptionfrom 。checkPackageAccesswhere
  • 如果ByIng返回null,它只是被忽略(就像它应该的那样)并且查询只匹配另一个谓词。
  • 如果我切换两个谓词,将ByIng第一个谓词放在子句中,那么ByLineawhere每种组合中一切都有效。
0 投票
1 回答
148 浏览

spring-data-jpa - Spring 数据规范 orderBy 子查询

在我的 MySql 项目中,我得到了这个带有 3 个实体的特殊模型:Prodotto 和许多子节点 QuotaIngrediente,这反过来也是 Ingrediente 的多对一子节点。我所有的关系都是双向的。他们都得到了一个自动生成的整数 ID,并删除了其他字段以专注于有趣的字段。

我正在使用 SpringData 规范,我可以构建一个查询来根据成分标准获取 Prodotto,这样:

它按预期工作,但现在我想按特定成分的 QuotaIngrediente perc_ing 字段对其进行排序。显然,我问的是如何在数据库上做,而不是在业务逻辑中。

0 投票
0 回答
158 浏览

c# - Onion Architecture 数据库映射

我一直在玩洋葱架构DDD规范模式。Entity Framework 有许多实现,其中域实体直接位于 context 的 DBSet<> 中。对我来说,这是不行的,至少因为多对多的关系。假设我们有下一个 dbo:

问题是实体模型不应该知道任何关于它的信息,Post.PostTag因为它是持久层实现的细节。例如,我可以将存储更改为 JSON 对象,并且不再需要中间表。因此,理想情况下,我的实体模型将如下所示:

或者更糟糕的是,如果我们决定向 中添加一些新属性PostTag,例如

然后,它会影响Tag在考虑这个带有实体模型的例子时。

因此,我想要同时拥有实体dbo模型。当我实现位于基础设施层的 PostRepository 时,我想公开IQueriable<Post> Query(). 这是真正的问题开始了。问题的原因是作为存储库消费者的应用程序层只能在Post实体内操作,而不能在实体内操作PostDbo。它们可以不同。因此,我无法为该实体编写规范。因此,主要问题是如何实现可以公开这种Query()方法的存储库模式,同时具有分离entitydbo模型,而不会对查询的性能和优化产生严重影响。


或者,也许规范模式只是一个巨大的开销,它更有害而不是有用。原因是当您决定将实体框架更改为其他内容时,您应该为Expression<Func<TEntity>>. 你怎么看?


也许我有什么问题,所以请纠正我。我将不胜感激合理的答案。

谢谢

0 投票
1 回答
72 浏览

c# - 可重用的表达式

给定带有 Where 子句的查询

和另一个具有类似 Where 子句但属性通过引用链接的查询。

对于功能,这确实有效:

对于表达式,这不起作用:

我想使用规范在我的查询中重用表达式。

像这样:

如何实现这个方法?

此外,我希望这不仅适用于二进制“和”表达式,还适用于任何表达式(即任何组合深度和参数类型)。(例如a => a.Prop1 == val1 && a.Prop2.Prop2a == val2a && a.Prop2.Prop2a == val2a)但基本上它只是实现我尝试用上面的函数 g2 做的事情。

0 投票
2 回答
2286 浏览

c# - EF Core 规范模式添加所有列以使用自定义规范对数据进行排序

我为我的 .net 核心项目应用了规范模式。我还为包含、排序、分页等创建了自定义规范。

sort使用 queryString 从 api url 获取值并传递给自定义规范类。在这堂课中,我添加了一些switch case用于确定应该orderByorderByDescending

但是该表中的列太多。那么有没有办法一次将该sort变量应用于所有列?还是我必须将所有列写入switch

这是我的自定义规范类。

}

ISpecification.cs 接口

BaseSpecification.cs

规范评估器.cs

0 投票
2 回答
541 浏览

c# - 如何在 C# 的通用规范模式中为嵌套对象添加 .ThenInclude

我已经为我的通用 repo 实现了一个通用规范模式,但我不知道如何将 a 添加.ThenInclude()到代码中。
仅供参考 - 我有 3 个实体(User->PracticedStyles->YogaStyles),当我去取我的时候,User我想取YogaStyles他/她的所有练习(例如 bikram、vinyasa 等)。但是我无法获取YogaStyle实体,我可以获取所有PracticedStyle实体,User因为它只有一个实体深,但我不知道如何YogaStyle从每个实体中获取/包含实体PracticedStyle

我正在使用具有通用存储库模式的通用规范模式,并且我创建了一个中间表来保存所有样式,这可能是错误的,或者我不知道如何正确使用通用规范模式?

这是我的控制器和控制器调用的方法

这是来自 BaseSpecification 的“AddInclude”

这是 getEntityWithSpec

和规格评估员

0 投票
2 回答
177 浏览

spring-boot - 使用规范和谓词从数据库中检索数据的条件查询

我有两个表(用户,车辆),我想编写条件查询以使用条件查询规范和谓词从两个联接表中检索数据。

如何使用标准查询来实现它?