特殊 类info_text 通过搜索id获取对象为代理类,却不是实体类
2017-08-02 16:47
197 查看
特殊 类InfoText 通过搜索id获取对象为代理类,却不是实体类
1.InfoText 类中包含三个longtext 类型的属性,id text text1 text2
不管是通过 query.list() 方法 还是session.get() 方法获取的InfoText 对象都为实体类的代理对象 infotext_javassist
但是其他对象搜索出来却是实体类。且搜索方式一致
如 InfoMain 对象,怀疑是longtext 类型的属性导致,但是在InfoMain 中添加了三个类似的longtext 的属性,依然没有搜索出代理对象来,说明跟大类型的属性没有任何关系
直接使用sql语句来搜索的话,InfoText 是可以获取到对象信息的
最终找到原因为:
在InfoMain 与InfoText 实体对象做1对1关联时,为了实现InfoText 的懒加载 添加了属性 optional=false
@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY,optional=false)
@PrimaryKeyJoinColumn
@ExcelField(title = "新闻内容", align = 2, sort = 25, fieldType = InfoTextType.class)
@NotFound(action=NotFoundAction.IGNORE)
public InfoText getInfoText() {
return infoText;
}
去掉optional=false 后正常获取InfoText 对象。
另一点 在获取对象InfoMain 之前 先获取InfoText ,这时的InfoText 也是普通对象不是代理对象。
问题解决
总结:虽然在InfoMain 中设置了 InfoText 为懒加载,但是获取InfoMain 时,就获取了 InfoText 的代理对象,此时的代理对象应该是存到session中了,
导致无论用什么方式再去获取InfoText 都获取了该代理对象
如下:
qnit.modules.info.entity.InfoText@6ff1797f
qnit.modules.info.entity.InfoText@6ff1797f
id都是一样的,所以一直获取的都是该代理对象.
1.InfoText 类中包含三个longtext 类型的属性,id text text1 text2
不管是通过 query.list() 方法 还是session.get() 方法获取的InfoText 对象都为实体类的代理对象 infotext_javassist
但是其他对象搜索出来却是实体类。且搜索方式一致
如 InfoMain 对象,怀疑是longtext 类型的属性导致,但是在InfoMain 中添加了三个类似的longtext 的属性,依然没有搜索出代理对象来,说明跟大类型的属性没有任何关系
直接使用sql语句来搜索的话,InfoText 是可以获取到对象信息的
最终找到原因为:
在InfoMain 与InfoText 实体对象做1对1关联时,为了实现InfoText 的懒加载 添加了属性 optional=false
@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY,optional=false)
@PrimaryKeyJoinColumn
@ExcelField(title = "新闻内容", align = 2, sort = 25, fieldType = InfoTextType.class)
@NotFound(action=NotFoundAction.IGNORE)
public InfoText getInfoText() {
return infoText;
}
去掉optional=false 后正常获取InfoText 对象。
另一点 在获取对象InfoMain 之前 先获取InfoText ,这时的InfoText 也是普通对象不是代理对象。
问题解决
总结:虽然在InfoMain 中设置了 InfoText 为懒加载,但是获取InfoMain 时,就获取了 InfoText 的代理对象,此时的代理对象应该是存到session中了,
导致无论用什么方式再去获取InfoText 都获取了该代理对象
如下:
qnit.modules.info.entity.InfoText@6ff1797f
qnit.modules.info.entity.InfoText@6ff1797f
id都是一样的,所以一直获取的都是该代理对象.
相关文章推荐
- Flex编程注意之直接获取某个组件的对象(this[]用法)通过id获取控件
- 金蝶BOS,通过ID,获取动态单据对象,无需知道实体类型
- js获取封装对象/通过id tag className
- Flex编程注意之直接获取某个组件的对象(this[]用法)通过id获取控件
- C++通过typeinfo获取对象类型.cpp
- JQuery选择器通过click事件获取当前点击对象的id,name,value属性
- 通过WMI - Win32_Processor - ProcessorId获取到的并不是CPU的序列号,也并不唯一
- jq通过对象获取其ID值,再简单ajax传到后台改值
- 通过js来获取select的全部值,包括id,text,value
- .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
- Flex编程注意之直接获取某个组件的对象(this[]用法)通过id获取控件
- Flex编程注意之直接获取某个组件的对象(this[]用法)通过id获取控件
- Hibernate基础-通过ID获取一个对象
- 通过class获取data-id以及相应的对象
- jq通过对象获取其ID值
- JavaScript通过元素id和name直接获取元素对象
- 通过ID或NAME获取HTML标签对象及信息
- webApi core2 DI通过代码来获取容器里面已注入的对象
- 根据ToolStripButton的text值来获取这个对象的一些属性
- 如何通过Spring获取到Hibernate的Configuration对象以及Table,Column对象