JPA 大文本

         使用jpa也有很长一段时间了,其中的奥妙也只是用到了一点点,项目中不用到的知识也很少去想,真心是现用现学,这次遇到的问题是大文本,在数据库中的类型为TEXT,但是映射的时候该怎么做呢?!下面就来介绍一下吧:

         实话实说,在使用jpa的时候,大部分的属性数据类型都是string,我们也知道string映射到数据库最大长度为255,在mysql数据库中映射为varchar(255),如图所示:

     

       我们也看到了,如果我想保存一篇文章,单纯的用string类型的去映射,显然是没办法办到的,因为保存100多个汉字基本就会超出数据库的极限了。那么该怎么办呢?

       没错我们可以使用@Lob注解,Lob适用于标注字段类型为ClobBlob的类型,Clob是长字符串类型,映射中实体类型可以为char[]Character[]、或者String类型;Blob是字节类型,映射为实体中的类型为byte[]Byte[]、或者实现了Serializable接口的类型。这两种类型的数据一般占用的内存空间比较大,一般设置为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在页面显示了:


      现阶段遇到的问题都是由解决方案的。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值