JPA 大文本
栏目:php教程时间:2015-05-27 08:15:47
使用jpa也有很长1段时间了,其中的奥妙也只是用到了1点点,项目中不用到的知识也很少去想,真心是现用现学,这次遇到的问题是大文本,在数据库中的类型为TEXT,但是映照的时候该怎样做呢?!下面就来介绍1下吧:
实话实说,在使用jpa的时候,大部份的属性数据类型都是string,我们也知道string映照到数据库最大长度为255,在mysql数据库中映照为varchar(255),如图所示:
我们也看到了,如果我想保存1篇文章,单纯的用string类型的去映照,明显是没办法办到的,由于保存100多个汉字基本就会超越数据库的极限了。那末该怎样办呢?
没错我们可使用@Lob注解,Lob适用于标注字段类型为Clob和Blob的类型,Clob是长字符串类型,映照中实体类型可以为char[]、Character[]、或String类型;Blob是字节类型,映照为实体中的类型为byte[]、Byte[]、或实现了Serializable接口的类型。这两种类型的数据1般占用的内存空间比较大,1般设置为lazy加载。
@Column(name = "name", length = 50)
private String name;
@ManyToMany(cascade=CascadeType.MERGE,fetch=FetchType.EAGER,mappedBy="course",targetEntity = Clazz.class)
private Set<Clazz> clazzs;
/*@OneToMany(cascade=CascadeType.DETACH,fetch=FetchType.LAZY,targetEntity=People.class)
@JoinColumn(name="peopleId" ,nullable=true)*/
private People people;
@Lob
private String describeLob;
@Lob
@Column(name = "testCommon" ,columnDefinition = "TEXT")
private String describe ;
通过查询取得的数据,简单的实例就用json在页面显示了:
现阶段遇到的问题都是由解决方案的。
------分隔线----------------------------
------分隔线----------------------------