标签: serializable

Java 序列化库,无需无参数构造函数和 Serialized 实现

java世界中是否有任何方法可以在不需要无参数构造函数和Serialized实现的情况下进行序列化?

java serialization constructor serializable

5
推荐指数
1
解决办法
3093
查看次数

为什么在 JPA 2/Hibernate 中使用共享主键时实体需要可序列化?

所以我有以下情况:

@Entity
class Image {
  @Id
  @GeneratedValue
  private Long id;

  ....
}

@Entity
class ImageData implements Serializable {
  @Id
  @OneToOne
  private Image image;

  ....
}
Run Code Online (Sandbox Code Playgroud)

这一切都工作正常,但为什么 ImageData 需要可序列化?如果不是,我会收到异常,它需要可序列化:

 org.hibernate.MappingException: composite-id class must implement Serializable:...
Run Code Online (Sandbox Code Playgroud)

我知道标识符需要可序列化,但为什么现在却相反了?

java hibernate jpa serializable jpa-2.0

5
推荐指数
1
解决办法
6818
查看次数

CDI 构造函数注入不适用于瞬态不可序列化依赖项

我非常喜欢 CDI 的构造函数注入,但现在我发现了一个用例,其中构造函数注入显然无法按预期工作。

在我的示例中,我有两个类。类“BeanA”没有明确定义的范围,也没有实现可序列化。类“BeanB”使用@SessionScoped 进行注释并且确实实现了可序列化。

public class BeanA{
}

@SessionScoped
public class BeanB implements Serializable{
    @Inject
    private BeanA beanA;
}
Run Code Online (Sandbox Code Playgroud)

When I try to inject an instance of BeanA into BeanB of cource I get an UnserializableDependencyException from Weld because BeanA isn't serializable. This is the expected behaviour.

When I mark the field "beanA" with "transient" the injection works without problems:

@Inject
private transient BeanA beanA;
Run Code Online (Sandbox Code Playgroud)

Now Weld doesn't throw any exceptions.

This is perfectly fine for me but my …

java serializable transient constructor-injection cdi

5
推荐指数
1
解决办法
2411
查看次数

NHibernate : 存储 VARBINARY 到 MAX

我正在使用以下映射将 Serializable 对象存储到 SQL Server 2008:

<class name="EMSApplication.Data.Domain.Configuration, EMSApplication.Data" table="ems_Configurations" proxy="EMSApplication.Data.Domain.IConfiguration, EMSApplication.Data" lazy="true">
  <id name="Id" type="System.Int32">
    <column name="Id" not-null="true"/>
    <generator class="native"/>
  </id>
  <property name="Settings" type="Serializable">
    <column name="Settings" not-null="true"/>
  </property>   
</class>
Run Code Online (Sandbox Code Playgroud)

它正在为数据库的列类型生成一个 varbinary(8000)。我怎样才能让它使用 varbinary(max)?

如果我使用:

<property name="Settings" type="Serializable" length="2147483647">
    <column name="Settings" not-null="true"/>
</property> 
Run Code Online (Sandbox Code Playgroud)

它也被截断为 8000。我使用的是 NHibernate3.2(不流畅)。

nhibernate blob serializable varbinary sql-server-2008

5
推荐指数
1
解决办法
3676
查看次数

将 Serilizable 转换为 HashMap 的派生

我正在尝试使用 .putExtra() 和 sendBroadcast() 将一些工作从 IntentService 发送到 BroadcastReceiver,所以我有自己的名为“Message”的类,它扩展了 HashMap<String,String> 并实现了 Serializable。

public class Message extends HashMap<String,String> implements Serializable{
    public MessageID ID;
    public int Encode(byte[] buff,int off);
    public int Decode(byte[] buff,int off);
    //...
}
Run Code Online (Sandbox Code Playgroud)

我是这样发送的:

public static void ProcessMessage(Message msg) {
    Intent broadcastIntent = new Intent();
    broadcastIntent.setAction(Receiver.BROADCAST);
    broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
    broadcastIntent.putExtra("MESSAGE",(Serializable)msg);
    parentService.sendBroadcast(broadcastIntent);
    Print("Broadcasting intent to receiver ("+Receiver.BROADCAST+") from: "+parentService.toString());
}
Run Code Online (Sandbox Code Playgroud)

并像这样接收:

public void onReceive(Context context, Intent intent) {
    Sys.Print("Receiver handling: "+intent.getAction());
    if(intent.getAction().equals(BROADCAST)){
        try {
            Message msg = (Message) intent.getSerializableExtra("MESSAGE");
            Sys.Print("Receiver handling " + …
Run Code Online (Sandbox Code Playgroud)

java android serializable receiver android-intent

5
推荐指数
1
解决办法
358
查看次数

在不提供 writeObject / readObject 方法的情况下实现可序列化

如果一个类正在实现可序列化的接口,但writeObject/readObject代码库中的任何地方都没有方法实现怎么办?

默认方法是否defaultWriteObject/defaultReadObject会进行序列化?

是否只标记类implements Serializable足以序列化类?

如果是,那么什么正在被序列化,对象的状态在哪里被持久化?

java serializable

5
推荐指数
1
解决办法
1796
查看次数

类型错误:使用 pyLDAvis.display() 函数时,“复杂”类型的对象不是 JSON 可序列化的

我有一个包含九个文档的文档术语矩阵:

在此处输入图片说明

我正在运行代码如下:

import pyLDAvis.gensim
topicData = pyLDAvis.gensim.prepare(ldamodel, docTermMatrix, dictionary)
pyLDAvis.display(topicData)  
Run Code Online (Sandbox Code Playgroud)

执行 pyLDAvis.display 函数时出现以下错误:

类型错误:“复杂”类型的对象不是 JSON 可序列化的

有人可以在这里指导吗?可能是什么原因?

json serializable gensim

5
推荐指数
2
解决办法
4335
查看次数

Silverlight 4中的Serializable属性

那么我们还是在Silverlight 4中没有Seri​​alizable属性呢?我在互联网上有一些令人困惑的回答.当我尝试在我的代码中使用它时,我得到一个命名空间错误.这些是我的包括

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Runtime.Serialization;
Run Code Online (Sandbox Code Playgroud)

我将程序集System,System.Runtime.Serialization添加到我的项目中.

后续问题是,如果在Silverlight中不可用,我如何正确序列化单例?因为我打算使用这里给出的例子http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx

谢谢

silverlight attributes serializable

4
推荐指数
1
解决办法
8521
查看次数

Hibernate代码 - 无法强制转换为java.io.Serializable

我有以下Hibernate代码返回错误.根据我的错误消息,我的查询结果无法强制转换为Serializable.谁能帮我?这是我的代码的相关部分.

        Transaction tx = session.beginTransaction();
        Query myQuery = session.createQuery("from Sec where month = '"
                + month + "' and stage = " + stage + " and ntech = '" + ntech
                + "' and rowval = " + rowval);
        tx.commit();
        // Error in next line
        List<Sec> commentList = (List<Sec>) myQuery.list();
        Iterator<Sec> iterator = (Iterator<Sec>) commentList.iterator();
        sec = iterator.next();
        return sec;
Run Code Online (Sandbox Code Playgroud)

这是我的错误日志:

java.lang.ClassCastException: model.Sec cannot be cast to java.io.Serializable
    org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:759)
    org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:292)
    org.hibernate.loader.Loader.doQuery(Loader.java:412)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
    org.hibernate.loader.Loader.doList(Loader.java:1593)
    org.hibernate.loader.Loader.list(Loader.java:1577)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
    org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
    org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
    dao.SecDAO.getRow(SecDAO.java:63) …
Run Code Online (Sandbox Code Playgroud)

hibernate serializable

4
推荐指数
1
解决办法
1万
查看次数

使用不同的包名称对不同应用程序中的java对象进行de/serialize

我想在不同的应用程序之间共享java对象.

只要我在不同的项目中使用相同的包名称,它就可以正常工作.但是,如果我更改包名称,它就不再起作用了.

我试图通过扩展ObjectInputStream类并重写readClassDescriptor方法来解决这个问题.

但通过这样做,我收到以下错误:

java.io.StreamCorruptedException: invalid type code: 00
Run Code Online (Sandbox Code Playgroud)

......不知道如何解决这个问题.

这是我用于扩展ObjectInputStream类的代码:

public class MyObjectInputStream extends ObjectInputStream {

    public static Map<String, Class> classNameMapping = initclassNameMapping(); 

    private static Map<String, Class> initclassNameMapping(){
        Map<String, Class> res = new HashMap<String, Class>();
        //ipxTest is the name of the package where the objects got serialized
        res.put("ipxTest.IPX", interprojectxchangeTest.IPX.class); 
        res.put("ipxTest.A", interprojectxchangeTest.A.class);
        return Collections.unmodifiableMap(res);
    }

    public MyObjectInputStream(InputStream in) throws IOException {
        super(in);
        enableResolveObject(true);
    }


    protected MyObjectInputStream() throws IOException, SecurityException {
        super();
        enableResolveObject(true);
    }

    @Override
    protected java.io.ObjectStreamClass …
Run Code Online (Sandbox Code Playgroud)

java serializable

4
推荐指数
1
解决办法
2600
查看次数