Tho*_*hor 6 java mysql jpa lob jboss6.x
我有一个带@Lob注释的简单EntityBean .如果我删除这个注释,我在JBossAS 6.0.0.Final和MySQL5上没有错误.但是如果我用它注释@Lob(因为mt在我的情况下包含大约100到5000个字符),如果我坚持实体,我在测试环境中会出错.
@Lob:mt映射到VARCHAR@Lob:mt映射到LONGTEXT(这是我想要的,但是我得到了错误)这是我的实体:
@Entity
@Table(name = "Description")
public class Description implements Serializable
{
public static final long serialVersionUID=1;
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Lob
private String mt;
} // ... getter/setter
Run Code Online (Sandbox Code Playgroud)
错误在这里:
...
Caused by: org.hibernate.exception.GenericJDBCException: could not insert
[my.Description]
...
Caused by: java.sql.SQLException: Connection is not associated with a managed
connection.org.jboss.resource.adapter.jdbc.jdk6.WrappedConnectionJDK6@3e4dd
...
Run Code Online (Sandbox Code Playgroud)
我真的不知道为什么我会得到这个(可重现的)错误.环境似乎没问题,许多其他测试都通过了,它甚至可以在没有@Lob注释的情况下工作.
这个问题与JPA有关:如何将String保存到数据库字段中,键入MYSQL Text,其中@LobJPA/MySQL的使用是接受的答案.
更新1上述错误是特定于操作系统的.在W7机器上我没有问题@Lob,OSX Lion总是出错.我将尝试更新MySQL和驱动程序.
更新2 Kimi提议的解决方法@Column(columnDefinition = "longtext")工作正常,即使在OSX上也是如此.在这两种情况下,MySQL都会创建相同的列:LONGTEXT.
更新3我更新了MySQL mysql-5.5.17-osx10.6-x86_64和连接器mysql-connector-java-5.1.18.还是一样的错误.
有没有必要标注一个String属性@Lob。只需使用@Column(length = 10000).
编辑:
此外,您始终可以将长度设置为数据库特定的最大值,以及使用columndefinition适合您需要的设置来定义列类型。
例如,如果您使用的是 MySQL 5.0.3 或更高版本,则每种数据类型可以存储的最大数据量如下:
据我了解,@Lob只需根据基础数据库设置列类型和长度。
| 归档时间: |
|
| 查看次数: |
5112 次 |
| 最近记录: |