簡體   English   中英

映射對象流休眠Java EE

[英]Mapping Object Stream hibernate Java EE

嘗試將輸入和輸出流映射到數據庫時遇到映射問題。 我試圖使輸入流成為Blob,但是沒有用。 我需要進行簡單的聊天,以便客戶端可以發送和接收文件。 所以這就是為什么我需要它們在數據庫中。 我也試圖只存儲文件的內容,但是也沒有用。

我有下面的例外:

原因:org.hibernate.MappingException:無法確定類型:java.io.ObjectInputStream,在表:User處,用於列:[org.hibernate.mapping.Column(ois)]“}}

      @Entity

 public class User implements Serializable {
 private Integer id;
 private Socket sock;
private boolean isConnected;
private ObjectInputStream ois;
private ObjectOutputStream oos;
@Id
@GeneratedValue
public Integer getId() {
    return this.id;
}

public void setId(Integer id) {
    this.id = id;
}
public Socket getSock() {
    return sock;
}

public void setSock(Socket sock) {
    this.sock = sock;
}

public boolean isConnected() {
    return isConnected;
}

public void setConnected(boolean isConnected) {
    this.isConnected = isConnected;
}

public  ObjectInputStream getOis() {
    return ois;
}

public void setOis(ObjectInputStream ois) {
    this.ois = ois;
}

public ObjectOutputStream getOos() {
    return oos;
}

public void setOos(ObjectOutputStream oos) {
    this.oos = oos;
}

在此處輸入圖片說明

如果字段類型為Blob,則可以使用字節數組,如下所示:

@Column(name="ois")
private byte[] ois;

public byte[] getOis() {
    return ois;
}

public void setOis(byte[] ois) {
    this.ois = ois;
}

您只需要將文件轉換為字節數組,然后可以使用Hibernate將其存儲在數據庫中,例如:

File file = new File("C:\\my_file.txt");
byte[] byteFile = new byte[(int) file.length()];

try {
  FileInputStream fileInputStream = new FileInputStream(file);
  fileInputStream.read(byteFile);
  fileInputStream.close();
} catch (Exception e) {
  //Handle the error
}

希望這些信息對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM