oni*_*unn 55 java hibernate jpa blob
byte[]
我的实体中有一些字段,例如:
@Entity
public class ServicePicture implements Serializable {
private static final long serialVersionUID = 2877629751219730559L;
// seam-gen attributes (you should probably edit these)
@Id
@GeneratedValue
private Long id;
private String description;
@Lob
@Basic(fetch = FetchType.LAZY)
private byte[] picture;
Run Code Online (Sandbox Code Playgroud)
在我的数据库架构上,字段设置为,BLOB
所以这应该没问题.无论如何:每当我尝试插入图片或pdf时 - 没有什么比1mb
这更大,我只接受这个
16:52:27,327 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: 22001
16:52:27,327 ERROR [JDBCExceptionReporter] Data truncation: Data too long for column 'picture' at row 1
16:52:27,328 ERROR [STDERR] javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not insert: [de.ac.dmg.productfinder.entity.ServicePicture]
16:52:27,328 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
16:52:27,328 ERROR [STDERR] at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:218)
16:52:27,328 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
16:52:27,328 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
16:52:27,328 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
16:52:27,328 ERROR [STDERR] at java.lang.reflect.Method.invoke(Unknown Source)
16:52:27,328 ERROR [STDERR] at org.jboss.seam.persistence.EntityManagerInvocationHandler.invoke(EntityManagerInvocationHandler.java:46)
16:52:27,328 ERROR [STDERR] at $Proxy142.persist(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
我检查了我的MySQL cnf并且max_allowed
param设置为16M
- 我错过了什么吗?
Pas*_*ent 119
这一切都取决于用于picture
列的列类型.根据您的需要,使用:
TINYBLOB
:最大长度为255个字节BLOB
:最大长度为65,535字节MEDIUMBLOB
:最大长度为16,777,215字节LONGBLOB
:最大长度为4,294,967,295字节请注意,如果从JPA注释生成表,则可以通过指定MySQL的length
属性来"控制"MySQL将使用的类型Column
,例如:
@Lob @Basic(fetch = FetchType.LAZY)
@Column(length=100000)
private byte[] picture;
Run Code Online (Sandbox Code Playgroud)
根据具体情况length
,你会得到:
0 < length <= 255 --> `TINYBLOB`
255 < length <= 65535 --> `BLOB`
65535 < length <= 16777215 --> `MEDIUMBLOB`
16777215 < length <= 2³¹-1 --> `LONGBLOB`
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46625 次 |
最近记录: |