2016-10-27 1 views
0

입력 스트림과 출력 스트림을 데이터베이스에 매핑하는 동안 매핑 문제가 있습니다. 입력 스트림을 Blob로 만들려고했지만 작동하지 않았습니다. 간단한 채팅을해야하므로 클라이언트가 파일을 보내고받을 수 있습니다. 그래서 그것이 내가 데이터베이스에 있어야하는 이유입니다. 나는 또한 파일의 내용을 저장하려고 시도했지만 또한 작동하지 않았다.매핑 객체 스트림 최대 절전 모드 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; 
} 
당신은 당신이 예를 들어, 최대 절전 모드를 사용하여 데이터베이스에 저장할 수 있습니다 그 후, 바이트 배열에 파일을 변환 할 필요가

:

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 
} 

이 정보가 도움이되기를 바랍니다.