【发布时间】:2021-07-27 13:42:41
【问题描述】:
我希望有人以前可能遇到过这个或类似的问题并可以帮助我:)
我有一个 KryoNet 服务器/客户端架构,我在其中发送消息。 这些消息之一包含“WorldEntity”类的实例。 这个实体看起来像这样:
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class WorldEntity {
@OneToMany
private Collection<EntityComponent> components;
}
我正在使用 spring + hibernate 将此实体保存到我的 postgresql 数据库中。 这一切正常。
当我现在将此实体发送到客户端时,kryonet 序列化程序会尝试延迟加载组件,它不应该这样做,因为客户端上没有休眠或数据库。 事实上,所有的数据都已经包含在实体中了。
我在某处读到,可以创建自定义序列化对象并将其添加到 KryoNet 客户端,以禁用此休眠加载:
Kryo kryoSerializer = new Kryo() {
@Override
public Serializer<?> getDefaultSerializer(final Class type) {
if (AbstractPersistentCollection.class.isAssignableFrom(type)) {
return new FieldSerializer(kryoSerializer, type);
}
return super.getDefaultSerializer(type);
}
};
很遗憾,这不能在 Kryo 客户端的构造函数中用作序列化对象。
任何帮助将不胜感激!
亲切的问候 达斯汀
【问题讨论】:
标签: java hibernate kryo kryonet