2016-10-27 19 views
0

入力ストリームと出力ストリームをデータベースにマップしようとしているときにマッピングの問題が発生しました。入力ストリームをBlobとして作成しようとしましたが、動作しませんでした。 私は簡単なチャットをする必要があるので、クライアントはファイルを送受信できます。だからこそ私はそれらをデータベースに入れる必要があります。私はまた、ファイルの内容を保存するだけでなく、動作しませんでした。マッピングオブジェクトストリームhibernate Java EE

私は、以下の例外が持っている:org.hibernate.MappingException:によって引き起こさ

をテーブルで、java.io.ObjectInputStream:用タイプ を決定することができませんでした列に対するユーザー、: [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; 
} 

enter image description here

答えて

0

あなたはちょうどあなたが休止状態を使用して、データベース上に保存することができ、その後、たとえば、バイト配列にファイルを変換する必要が

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

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

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

:フィールドのEタイプがBLOBです、あなたはバイト配列、このようなものを使用することができます:

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 
} 

この情報がお役に立てば幸いです。