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