orm - 有没有办法在处理 ORM 对象时将 top 属性全局应用于 cfdump/writeDump?

标签 orm coldfusion cfml cfdump

处理嵌套的 ORM 关系时,使用 cfdumpwriteDump可以迅速导致 java.lang.OutOfMemoryError错误是因为 CF 尝试解决嵌套对象中的关系并转储太多对象。

这可以通过 top 避免属性,例如:<cfdump var=#SomeObject# top=3 />
记住一直写这个很痛苦 - 有没有办法配置 CF 在处理 ORM 对象时不会下降太多级别?

最佳答案

似乎没有任何管理员设置。 ( issue raised )

一个不完美的解决方案是通过重命名 {cfusion}/wwwroot/WEB-INF/cftags/dump.cfm 来为 cfdump 标签创建一个包装器。到(例如)origdump.cfm然后创建一个新的 dump.cfm文件包含:

<cfif isObject(attributes.var) AND NOT StructKeyExists(attributes,'top')>
    <cfset attributes.top = 3 />
</cfif>

<cforigdump attributecollection=#attributes# />

<cfexit method="exitTag" />

幸运的是,writeDump 函数会调用这个包装器(所以它适用于标签和函数)。

不幸的是,包装器不是递归调用的——如果 ORM 对象在结构体或数组中,那么原始问题仍然表现出来——有可能预扫描复杂变量以确定内部是否存在关系并设置适当的最高值,但这只能实现有限的解决方案(即它会影响相邻的结构/数组)。

关于orm - 有没有办法在处理 ORM 对象时将 top 属性全局应用于 cfdump/writeDump?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055475/

相关文章:

xml - ColdFusion xml生成显示html标签

sql - ColdFusion 查询 - 注入(inject)保护

coldfusion - cfsetting的ColdFusion 9脚本语法是什么?

java - 使用 @ElementCollection : org. hibernate.MappingException : Could not determine type for: java. util.Set 时出错,在表中:对于列

sql - 在 ORACLE IN 子句中使用元组和元组中一个元素的条件

oop - ColdFusion 9 CFScript 私有(private)属性和公共(public)属性

coldfusion - 在 ColdFusion 中返回 'nil' 值的替代方法

orm - Kohana ORM加载时报告记录未加载

java - Hibernate @ManyToOne 映射 - 无需设置 @Id 属性即可自动加载

java - ColdFusion 查询到 java.sql.ResultSet