2016-10-27 82 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 
} 

我希望这些信息对您有所帮助。