问题标签 [resulttransformer]
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.
java - Hibernate 的结果转换器可以用来映射到相关的非托管实体吗?
我使用 ResultTransformer 映射到简单的非托管实体,即与其他实体没有关系。但我想知道是否可以通过休眠映射到一组相关的非托管实体?为了清楚起见,如果我有一组如下所示的非托管实体,
我有一个如下所示的 SQL,
然后我想做类似的事情
我知道我可以在没有 ResultTransformer 的情况下通过查看返回的数据并自己填充对象图来做到这一点。如果我必须编写该逻辑,我想将其实现为自定义 ResultTransformer。你认为这样做是否明智?
任何想法或帮助将不胜感激。谢谢!
java - 使用 AliasToBeanResultTransformer 设置的休眠 HQL 投影问题
我在使用AliasToBeanResultTransformer的Hibernate HQL 投影时遇到问题,基本上我试图返回的结果没有正确映射到 bean,情况如下:
我正在使用的 HQL 查询是这样的:
我想从基于它的加入关系中获取CategoryType
's 。IncidentEntity
当我不尝试在其上使用任何变压器时,这可以正常工作。categoryTypes
是一个 Set 并且转换器不断尝试检查方法的参数类型并失败,因为它没有找到 aCategoryTypeEntity
而是找到 a java.util.Set
,就好像它试图将单个映射CategoryTypeEntity
到categoryTypes
字段中一样。我本以为因为它是一个 Set ,所以它会将数据作为 a 拉出Set
,然后尝试将其映射到该categoryTypes
字段。显然不是。
这是我打的电话:
我得到的例外是:
休眠日志消息是:
使用休眠 3.6.10
谁能看到这里发生了什么?这看起来真的不像正常行为,也许我做错了什么。将不胜感激我能得到的任何帮助!
更新:这很奇怪,与问题没有直接关系。当我将休眠 use_query_cache 属性设置为 true 时,我在 AliasToBeanResultTransformer 中不断将投影结果设为 null (然后结果返回为 null (或 [null, null, null] 取决于返回的数量。我认为这可能是一个错误? 关于手头的问题,当我删除结果转换器时,它CategoryTypeEntites
按预期返回 3。当它添加时,我得到一个 CategoryTypeEntity,它正在 Transformers 的 transformTuple 方法中处理。对这两个问题真的很困惑。
干杯,本
c# - NHibernate and DTOs to return specific data from hierarchical data
I have several tables that I need to pull data from but I do not need all of the data in all of the tables. So for example I have the following Order object that contains several child objects and object collections.
Also some of these child objects in turn have child objects and at the most extreme we have a 4 tier object hierarchy.
So my problem is that I need to retrieve a list of objects that contain only specific information from most of these child objects.
Currently when I retrieve the list of orders I am pulling everything back. I have used lazy loading so that I don't do this but I will eventually need to pull this information back as I am accessing at least one piece of data in each of these child objects.
So I was thinking that instead of populating a list of orders I could create DTO's for each of the data collections that I need. My problem is I am not sure where to start. I have seen examples of people using DTO's but are only populating them once they have retrieved all of the data. I don't want to do this. I want to only retrieve the data I need and then populate the DTO's with the result sets.
I would really appreciate any guidance on where I should start and what I should be using.
regards
Noel.
c# - NHibernate 未映射表 - 对象是多列类型 - ToListResultTransformer
我让 NHibernate 执行从数据库构建的原始 sql 查询。在软件中,用户可以选择一个表和几个具有定义顺序的列。在我的软件中,我使用这些信息来构建一个 sql 查询,该查询从表中选择定义的列并将这些列连接到一列。这是一个简单的例子。
用户定义他想从表中选择列FirstName
und 。然后我构建这个选择语句:SurName
User
现在我尝试使用 select 语句:
但是我的问题是现在我收到了一条GenericADOException
消息
对象是多列类型
我在互联网上没有找到太多关于我的问题的信息。只有一个线程完成相同任务而没有此错误:NHibernate SQL Query mapping on Single Column Result
mysql - 具有预测的条件查询不获取一对多集合
所以我有2个hibernate pojos如下
我正在使用以下条件查询所有者表 -
我需要拥有各自猫的所有者列表。
如果我不添加预测(相当于 select * ),我将为每个所有者填充猫。但是 select * 会非常昂贵,因为所有者表也有 60 多个与许多其他表有外键关系的列。我想使用投影来仅选择所需的列,以便查询执行得更快。如果我添加投影和/或别名,我会得到所有者但没有猫(每个所有者的猫为空)。
我已经为此搜索了很多解决方案,尝试了所有方法来创建标准中的别名和投影,甚至尝试使用自定义 ResultTransformers。当我使用投影时,这些似乎都不起作用。
还有其他人遇到过类似的问题吗?有任何想法吗?
c# - NHibernate AliasToBean 转换器抛出然后 QueryOver 别名是私有字段
我在 VS2015 的 .net 4.5 目标项目中使用来自 NuGet 的 NHibernate 3.3.1.4000。
我有两个环境,第一个env1是带有 VS2012 和 VS2015 的 windows 8.1,第二个是带有 windows 10 且只有 VS2015 的 env2 。
正如QueryOver docs中所述,别名可以是:
在 QueryOver 中,使用空变量分配别名。该变量可以在任何地方声明(但在运行时应该为空)。然后编译器可以检查该变量的语法是否正确使用,但在运行时不会评估该变量(它只是用作别名的占位符)。
QueryOver 中的每个 Lambda 表达式函数都有一个相应的重载以允许使用别名,以及一个 .JoinAlias 函数使用别名遍历关联而不创建子 QueryOver。
所以这意味着具有空值的私有字段应该可以作为别名正常工作。
但是……并不是那么容易。
我有下一个例子:
这在env1上工作得很好,但会引发异常:
在env2上。
请注意,如果我选择没有 AleasToBean 的 Id 列表:
它在两种环境中都按预期工作。
关于可能导致env2问题的任何想法?
工作很简单,只需在与方法相同的范围内创建别名,但我想知道我在配置中缺少什么,因为示例看起来是正确的。:(
java - 将 Hibernate 结果集转换为包含 pojo 列表的 pojo
我有一个类似的pojo:
CourseResultPojo 看起来像这样:
我有学生、课程、教师、电话、电子邮件等的休眠实体(数据库:Postgres)。
这是我的一段代码:
我想将查询保留在 NativeSQL 中,而不是 JPQL 中。编辑:因为查询可以随时更改。我想将查询存储在数据库中并根据需要进行编辑。如果在本机查询中,测试会更容易。
我知道 JPQL 具有类似的功能,我们可以通过它的构造函数将 JPA 查询的结果转换为 pojo,例如 select new (Pojo.class.getName()....) ,但这与我面临的问题相同。
有了我所拥有的,我将不得不遍历我的服务返回的 StudentResultPojo 列表,并且我必须通过从数据库中检索数据或通过导航它们的 Hibernate 关系在 Java 代码中为每个 StudentResultPojo 填充 coursePojoList,这需要一些时间时间。
实体看起来像:
问题:如果我有一个以 2 行返回结果的查询(不是 JSON,只是运行查询时返回的结果)
有没有办法可以将结果转换为带有 CourseResultPojos 列表的单个 StudentResultPojo?
这意味着我的 StudentResultPojo 的属性值为
并且列表将有两个 CourseResultPojo 对象
谢谢你。
c# - 带有 AliasesToBean 转换器的 Nhibernate 2 级缓存
我有一个实体:
和相关的Dto:
我有一个非常简单的查询:
它一直在工作,直到我插入二级缓存。因此,如果我取消注释Cacheable()
行,我将得到异常:
消息:值不能为空。参数名称:别名 StackTrace:
那有什么问题呢?它是 NHibernate 的错误吗?我尝试了不同的提供商,但无济于事。我也尝试像这样创建 CacheableResultTransformer:
它可以返回和缓存数据,但只能作为元组(对象 [])。我没有设法返回 Dto。
这是演示问题的工作示例:github
hibernate - Hibernate:在 String 属性上投影到布尔值
我使用使用 Projections 列表的 Criteria 请求来返回自定义 DTO。现在我对属性有两个预测:
在我的 EmployeeDto 中,我有一个布尔属性“hasPicture”。此信息是我的 Employee 表上的 Nullable String 列(如果实际是图片,则为名称)。
我不关心名称本身,我想添加一个执行以下操作的新投影:
PictureName != null --> dto.hasPicture = true
PictureName == null --> dto.hasPicture = false
那可能吗?如何?
java - 将 Hibernate ResultTransformer 结果与原始 Hibernate 对象相结合
这是我想要做的: 1. 发送一个 HQL 来填充“用户”Hibernate 对象。2. 发送原生 SQL 以从“用户”表的一个非常大的数据列中检索一个较小的数据集。3. 将映射的 Hibernate 对象与步骤 2 中的列结果相结合。
我读到 ResultTransformer 可用于将结果集从 2 映射到 Hibernate 实体,在我的例子中是“用户”实体。有没有办法将 ResultTransformer 映射的结果插入到我的原始用户实体?
下面是一些示例: 1. HQL - 来自用户。我们为用户使用 Hibernate 映射文件并使用字节码增强,我们设置“xmlStringColumnlazy=true”。字符串 hql = "来自用户"; 列出用户 = session.createQuery(hql).list(); 2.我们发送一个查询
List resultXML = s.createSQLQuery("XML SQL 获取特定数据") .setResultTransformer( Transformers.aliasToBean(User.class)) .list();
用户 dto =(User) resultWithAliasedBean.get(0); //将需要代码将用户 dto 从 SQL 组合到原始