Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将第三方库中的对象存储在hibernate数据库中_Java_Hibernate - Fatal编程技术网

Java 将第三方库中的对象存储在hibernate数据库中

Java 将第三方库中的对象存储在hibernate数据库中,java,hibernate,Java,Hibernate,在开始之前,我对hibernate没有太多经验。我正在开发一个应用程序,我使用我的同事库来显示一些数据。我想在数据库中存储一些录制对象,所以我不需要每次使用特定函数时都创建它们。我想从数据库中读取它们。首先我试着这样做: @Entity public class RecordingEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Lob @Colu

在开始之前,我对hibernate没有太多经验。我正在开发一个应用程序,我使用我的同事库来显示一些数据。我想在数据库中存储一些录制对象,所以我不需要每次使用特定函数时都创建它们。我想从数据库中读取它们。首先我试着这样做:

@Entity
public class RecordingEntity
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Lob
    @Column(name = "recording")
    private Recording recording;

    @ManyToOne
    @Column(name = "user")
    private User user;

    public RecordingEntity(Recording recording, User user)
    {
        this.recording = recording;
        this.user = user;
    }

    public Recording getRecording()
    {
        return recording;
    }

    public Long getId()
    {
        return id;
    }

    public void setRecording(Recording recording)
    {
        this.recording = recording;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getUser()
    {
        return user;
    }

    public void setUser(User user)
    {
        this.user = user;
    }
}

public class ImportRecording()
{
        ...
        try
        {
            TapestryDBConnection.performAtomic(new DBAtomicRunnable()
            {
                @Override
                public void run(Session session) throws InterruptedException, IOException, SerialException, SQLException
                {
                    ...
                    RecordingEntity recordingEntity = new RecordingEntity(recording);
                    session.saveOrUpdate(recordingEntity);
                    ...
                }
            }, true);
        }
    return null;
}
这将导致:
java.lang.ClassCastException:无法将录制转换为java.sql.Blob

然后,我在没有
@Lob
的情况下尝试了它,得到了:
org.hibernate.MappingException:无法确定列:[org.hibernate.mapping.Column(记录)]的记录类型,在表:RecordingEntity中

编辑:


我试图通过将对象转换为字节[]并将字节[]存储到数据库中来保存该对象。不幸的是,除非recording类实现接口Serializable,否则这是不可能的。我希望在不实现Serializable的情况下解决此问题。

您是否尝试在hibernate上映射此库中的实体?没有。你能告诉我怎么做吗?你想坚持住一团一团的@Lob表示应将属性持久化为Blob或Clob,具体取决于属性类型:java.sql.Clob、Character[]、char[]和java.lang.String将持久化为Clob。java.sql.Blob、Byte[]、Byte[]和serializable类型将在Blob中持久化。我后来注意到这两个(Blob/Clob)都不是我所需要的。理想的选择是,如果我可以将录制对象写入数据库,但我不知道这是否可行。