ListViewTag类将整个数据对象序列化,即使这些字段未在ListView中使用。我正在使用一个Hibernate实体,它使用多对多关系中的对象列表,我只想在需要时检索它们。当Serializer类尝试序列化对象时,Hibernate会尝试填充列表,但它不能,因为没有打开数据库会话。
com.kendoui.taglib.json.Serializer是否有任何方法可以忽略字段?
请参阅堆栈跟踪:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.syngenta.combichem.model.CcwEnumeration.buildingBlocks, could not initialize proxy - no Session
org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:575)
org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:214)
org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:554)
org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:142)
org.hibernate.collection.internal.PersistentSet.iterator(PersistentSet.java:180)
com.kendoui.taglib.json.Serializer.serializeIterable(Serializer.java:171)
com.kendoui.taglib.json.Serializer.serialize(Serializer.java:109)
com.kendoui.taglib.json.Serializer.serializeMap(Serializer.java:158)
com.kendoui.taglib.json.Serializer.serialize(Serializer.java:121)
com.kendoui.taglib.json.Serializer.serializeIterable(Serializer.java:174)
com.kendoui.taglib.json.Serializer.serialize(Serializer.java:109)
com.kendoui.taglib.json.Serializer.serializeMap(Serializer.java:158)
com.kendoui.taglib.json.Serializer.serialize(Serializer.java:113)
com.kendoui.taglib.json.Serializer.serializeMap(Serializer.java:158)
com.kendoui.taglib.json.Serializer.serialize(Serializer.java:111)
com.kendoui.taglib.WidgetTag.script(WidgetTag.java:101)
com.kendoui.taglib.WidgetTag.doEndTag(WidgetTag.java:61)
com.kendoui.taglib.ListViewTag.doEndTag(ListViewTag.java:82)
答案 0 :(得分:0)
不幸的是,Serializer类不提供跳过属性的功能。您可以查看序列化的源代码:
解决这个问题的一种方法是创建一个ViewModel(或者在你的情况下是几个ViewModel),它只包含必需的属性。
我希望这会有所帮助。
答案 1 :(得分:-1)
创建一个包含该字段必需的所有属性的类