当前位置: 代码迷 >> Eclipse >> SSH结构下存图片的有关问题
  详细解决方案

SSH结构下存图片的有关问题

热度:86   发布时间:2016-04-23 00:29:45.0
SSH结构下存图片的问题
本帖最后由 go_to_your_mom 于 2014-06-07 17:01:54 编辑
要想向ORACLE中的表AA传两个字符 和一张图片 字符可以传图片传不了 我是以存对象的形式传的 
user代码如下:

package com.mazhengyu.model;

import java.awt.Image;

import javax.annotation.Generated;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import oracle.sql.BLOB;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="AA")
@SequenceGenerator(name="SEQ_JDPS_content",allocationSize=1,initialValue=1, sequenceName="SEQ_JDPS_CONTENT") 
public class User {
private int ID;
private String USERNAME;
private String PASSWORD;
private BLOB BLOBTP;

 

public BLOB getBLOBTP() {
return BLOBTP;
}
public void setBLOBTP(BLOB bLOBTP) {
BLOBTP = bLOBTP;
}
@Id 
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_JDPS_content")  
public int getId() {
return ID;
}
public void setId(int id) {
this.ID = id;
}
public String getUsername() {
return USERNAME;
}
public void setUsername(String username) {
this.USERNAME = username;

}
public String getPassword() {
return PASSWORD;
}
public void setPassword(String password) {
this.PASSWORD = password;
}




public String toString(){
return USERNAME+","+PASSWORD+","+BLOBTP;

}
}


图片的类型是用BLOB吗?
下面是执行代码:

@Component("user")
@Scope("prototype")//姣忎釜璇锋眰鐢熸垚鏂扮殑action
public class UserAction extends ActionSupport implements UserDao{

private Map requestMap;

private UserManager um ;

private String USERNAME;
private String PASSWORD;
private String PASSWORD2;
private String WTR;
public String getWTR() {
return WTR;
}

public void setWTR(String wTR) {
WTR = wTR;
}

public UserAction() {
requestMap = (Map)ActionContext.getContext().get("request");
}

public String execute() throws Exception {
User u= new User();
List<User> a = getHibernateteteplate().find("from User u where u.id =28"); 
requestMap.put("WTR", a);
File file = new File("e://q.bmp");
FileInputStream photoStream = new FileInputStream(file);
Blob img=Hibernate.createBlob(photoStream);
u.setUsername("呵呵");
u.setPassword("你好");
u.setBLOBTP( (BLOB) img);
save(u);

return "success";
}


public UserManager getUm() {
return um;
}

// @Resource(name="userManager")
public void setUm(UserManager um) {
this.um = um;
}


public String getUsername() {
return USERNAME;
}


public void setUsername(String username) {
this.USERNAME = username;
}


public String getPassword() {
return PASSWORD;
}


public void setPassword(String password) {
this.PASSWORD = password;
}


public String getPassword2() {
return PASSWORD2;
}


public void setPassword2(String password2) {
this.PASSWORD2 = password2;
}


private HibernateTemplate hibernateteteplate;
public HibernateTemplate getHibernateteteplate() {
return hibernateteteplate;
}
@Resource(name="hibernateTemplate")
public void setHibernateteteplate(HibernateTemplate hibernateteteplate) {
this.hibernateteteplate = hibernateteteplate;
}

public void save(User u) {

hibernateteteplate.save(u);
}
}


估计是红色代码里的问题 ,大神们如何改!??

还有 如果我想单独在数据库里取一个USERNAME 那么find里面怎么写 !?
第一个问题比较重要!
------解决方案--------------------
楼主你好,你试试将图片类型private Image inImage;改成这样,oracle10版本及以上都可以识别的。还有单独取Username的话,不知道你知道Username的值么?要是知道就添加判断条件就好,要是不知道的话,也可以通过TOP排序来取Username的值,方法很多。
  相关解决方案