`

jpa对blob类型的支持,出现错误

    博客分类:
  • java
JPA 
阅读更多
这个是实体:
@Entity
@Table(name="Person3")
public class Person3 implements Serializable {

	public enum Level{LEVEL1,LEVEL2,LEVEL3};
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	@Column(name="username",unique=true,nullable=false)
	private String name;
	private int age;
	private double salary;
	[color=red]@Lob
	private byte[] image;[/color]
	@Temporal(TemporalType.DATE)
	private Date birthday;
	@Column(name="isMarried",columnDefinition="tinyint(1)")
	private boolean isMarried;
	@Enumerated(EnumType.STRING)
	private Level level;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	public byte[] getImage() {
		return image;
	}

	public void setImage(byte[] image) {
		this.image = image;
	}

	public Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public boolean isMarried() {
		return isMarried;
	}

	public void setMarried(boolean isMarried) {
		this.isMarried = isMarried;
	}

	public Level getLevel() {
		return level;
	}

	public void setLevel(Level level) {
		this.level = level;
	}

	public Person3() {
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public int hashCode() {
		return (this.id == null) ? 0 : this.id.hashCode();
	}

	public boolean equals(Object object) {
		if (object instanceof Person3) {
			final Person3 obj = (Person3) object;
			return (this.id != null) ? this.id.equals(obj.id)
					: (obj.id == null);
		}
		return false;
	}

}


这个是测试类:
private static void main() throws Exception {
		Context ctx = new InitialContext();
		PersonManageBeanRemote pmb = (PersonManageBeanRemote) ctx.lookup("PersonManageBean/remote");
		Person3 p = new Person3();
		p.setName("lili");
		p.setAge(23);
		p.setMarried(true);
		p.setLevel(Person3.Level.LEVEL1);
		p.setSalary(2000.0);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			p.setBirthday(sdf.parse("1980-08-08"));
		} catch (ParseException e) {
			e.printStackTrace();
		}
                  //把图片保存到数据库
		InputStream is = Test.class.getClassLoader().getResourceAsStream("holly-11-10c.gif");
		byte[] buf=new byte[is.available()];
		is.read(buf);
		System.out.println("\n===="+buf.length);
		is.close();
		p.setImage(buf);
		pmb.save(p);
		
		Person3 p2 = pmb.findPerson("lili");
		System.out.println(p2.getSalary()+"=="+p2.getBirthday());
		byte[] image = p2.getImage();
		System.out.println("\n----"+image.length);
                  //把图片从数据库中读出来
		FileOutputStream fos2 = new FileOutputStream("temp2.gif");
		fos2.write(image);
		fos2.close();
	}

各位:最后对出来的图片不对,显示出来的和原来的不一样,比原来的字节数多了8个
打印结果:

====1473
2000.0==1980-08-08

----1481
大家帮我看看怎么回事?
分享到:
评论

相关推荐

    JPA学习笔记

    其他注解如`@Temporal`用于时间类型字段的处理,`@Lob`用于大对象(BLOB/CLOB)的映射。 ### 四、JPA映射 4.1 一对一映射 一对一映射分为共享主键映射和外键映射,通过`@OneToOne`注解实现,可以设置`mappedBy`...

    jpa性能优化ppt

    JPA(Java Persistence API)通过抽象低级别的数据访问代码来提高开发效率,但它也可能导致开发者忽视对数据库的深入思考,从而引发性能问题。为确保JPA与数据库协同工作,有几点需要特别关注: 1. **合理使用懒...

    oracle,weblogic读写blob

    Oracle 和 WebLogic 服务器在处理 BLOB(Binary Large Object)数据类型时,涉及的是数据库管理和Web应用程序中的数据存储与检索。BLOB 类型通常用于存储大量二进制数据,如图片、音频或视频文件。本篇文章将深入...

    Spring JPA学习

    **2.7.3.3 Spring Data JPA对事务的支持** - 默认情况下,Spring Data JPA的方法会在已存在的事务中运行,如果当前没有事务,则会自动开启一个新的事务。 **2.7.3.4 为接口中的部分方法提供自定义实现** - 可以通过...

    JPA框架新技术: 注解

    2. **在使用 FetchType.EAGER 时,需要注意在一个类中只能出现一次,否则会导致“cannotsimultaneouslyfetchmultiplebags”的错误。可以通过修改其他关联为 FetchType.LAZY 或者将 List 集合改为 Set 来解决此问题。...

    关于oracle中clob字段查询慢的问题及解决方法

    最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了。 blob字段直接用 select * from table_name where column like ‘%%'查找的时候是不能实现...

    0001_springboot-文件上传和图片上传显示.zip

    上传的文件需要被存储在某个地方,可以选择本地文件系统、云存储服务(如阿里云OSS、AWS S3)或数据库(BLOB类型)。本例中,我们假设使用本地文件系统。可以创建一个目录专门用来存放上传的图片,例如`resources/...

    Spring中文帮助文档

    2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere ...

    Spring API

    2.3.3. 对bean命名pointcut( bean name pointcut element)的支持 2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持 2.4. 中间层 2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere ...

    play框架手册

    支持类型的数组或集合 - 28 - POJO对象绑定 - 29 - JPA 对象绑定 - 30 - 定制绑定 - 30 - @play.data.binding.As - 30 - @play.data.binding.NoBinding - 31 - play.data.binding.TypeBinder - 31 - @play.data....

    基于SpringBoot的高清壁纸图片站.zip

    6. **文件上传与下载**:项目涉及到高清壁纸的上传和下载,因此需要处理文件流,这可能用到Spring Boot的MultipartFile接口和文件存储策略,例如存储在本地文件系统、云存储服务(如AWS S3)或数据库BLOB字段。...

    Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据

    由于XMLType是基于Blob类型构建的,所以它可以存储高达2GB的数据。然而,当尝试在Java应用中插入XMLType数据时,可能会遇到一些挑战。 1. **使用JDBC插入XMLType数据** - **方法一:字符串方式** 这是最直观的...

    oracle入门基础教程全面详细

    - **异常处理**:学习EXCEPTION块的使用,处理程序运行时可能出现的错误。 #### 十九、游标、函数 - **游标使用**:学习CURSOR的创建及遍历方法。 - **函数创建**:掌握FUNCTION的定义及调用方式。 - **游标与函数...

    如何修改mysql数据库的max_allowed_packet参数

    这个参数对处理大数据操作,如导入大文件、执行大查询或者传输大对象(如BLOB或TEXT列)时至关重要。当传输的数据包超过了`max_allowed_packet`设定的值,MySQL会拒绝接收,从而导致诸如"Got a packet bigger than '...

    FileUpload_SpringBoot:此代码用于将给定文件上载到DB,并在触发get调用时返回文件中存在的内容(仅当它是.txt文件时)

    数据库存储文件时,可以将文件内容转换为字节数组或Base64编码的字符串,然后存储在BLOB(Binary Large Object)类型的字段中。这样做的好处是便于数据库操作,同时也能节省磁盘空间,因为数据库可以进行优化存储。 ...

    java实现批量下载 多文件打包成zip格式下载

    `getPackage`方法返回了Blob类型的图片包数据。 5. **文件流处理**: 文件以字节数组的形式存储在内存中,这样可以避免磁盘I/O操作,提高效率。`Map, byte[]> files`存储了待下载的文件名与其对应的字节数组。 6....

    storage-api:储存API

    API定义了如何与其他软件组件通信,包括函数调用、数据格式、错误处理等。在Java中,Storage API就是一套用于存储和检索数据的接口和实现类。 Java的Storage API通常包含以下几个核心组件: 1. **java.io** 包:这...

Global site tag (gtag.js) - Google Analytics