2016-10-27 122 views
0

我試圖將輸入和輸出流映射到我的數據庫時有映射問題。我曾嘗試將輸入流設置爲Blob,但沒有奏效。 我需要進行簡單的聊天,因此客戶端可以發送和接收文件。所以這就是爲什麼我需要他們在數據庫中。我也嘗試只存儲文件的內容,但也沒有工作。映射對象流hibernate Java EE

我有下面的異常:

產生的原因:org.hibernate.MappingException:無法確定類型 :java.io.ObjectInputStream中,在表:用戶,爲列: [組織.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; 
} 

enter image description here

回答

0

如果第現場的e型的斑點,你可以使用一個字節數組,像這樣:

@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 
} 

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