论坛首页 Java企业应用论坛

mysql数据库中的text类型字段,用annotation映射

浏览 14281 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-08  
我看你的报错信息“Unknown column 'article_content' in 'field list' ”,是不是对应的表中没有'article_content'字段啊?对比仔细一点……
0 请登录后投票
   发表时间:2010-11-08  
@Lob
@Column(name = "fld_fulltext")
public String getFullText() {
return fullText;
}


正常我们这样写是没有错的
0 请登录后投票
   发表时间:2010-11-08  
@Lob注解表示属性将被持久化为Blob或者Clob类型的字段,
具体取决于属性的类型,
java.sql.Clob,
Character[],
char[] and
java.lang.String这些类型的属性都被持久化为Clob字段,
而java.sql.Blob,
Byte[],
byte[] 和
serializable类型则被持久化为Blob字段。

所以 按下面写会怎样呢?

@Lob
@Column(name = "fld_fulltext") 
public String getFullText() { 
    return fullText; 
} 
0 请登录后投票
   发表时间:2010-11-08   最后修改:2010-11-08
qiren83 写道
@Lob
@Column(name = "fld_fulltext")
public String getFullText() {
return fullText;
}


正常我们这样写是没有错的

今天我终于解决了这个问题了!!
我是这样写的:
@Lob
@Type(type="text")     
@Column(name="article_content",nullable=true)      
public String getArticleContent() {      
    return articleContent;      
} 

在上面加了一个@Type(type="text")注解
但是不知道为什么,如果我不加的话,就会插不了数据,出现以下的错误:
2201 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 1366, SQLState: HY000
2201 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Incorrect string value: '\xD5\xE2\xCA\xC7\xB4\xF3...' for column 'article_content' at row 1
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [com.wmzblog.model.article.Article]
0 请登录后投票
   发表时间:2010-11-08  
刚刚再弄了一下,原来去除那个@Lob注解也可以正常插入数据
但是只是像下面这样的话,我是不行的~~不知道你们是不是这样子
@Lob         
@Column(name="article_content",nullable=true)        
public String getArticleContent() {        
    return articleContent;        
}
0 请登录后投票
   发表时间:2010-11-08  
望月怀远 写道
刚刚再弄了一下,原来去除那个@Lob注解也可以正常插入数据
但是只是像下面这样的话,我是不行的~~不知道你们是不是这样子
@Lob         
@Column(name="article_content",nullable=true)        
public String getArticleContent() {        
    return articleContent;        
}

我插入的是中文数据,插不进数据,原来是编码类型的问题,于是我把项目和数据库的编码类型都设置为utf-8类型,
但还是插不进中文数据,只可以插入英文数据
0 请登录后投票
   发表时间:2010-11-08  
用@Type(type="text")注解的话,好像什么编码类型都没问题的,
但具体这个@Type注解是怎么回事,就不太清楚了,只会这样用而已,
希望知道的,告诉一下啊
0 请登录后投票
   发表时间:2010-11-08  
你用的是哪个dialect?
MySQL5InnoDBDialect? 如果是的话,应该没有问题的,看我给你的那个测试用例
@Lob还取决于你的返回类型,那个测试用例(包括同包下的其他的)可以看看
0 请登录后投票
   发表时间:2010-11-08  
shaozhuang.liu 写道
你用的是哪个dialect?
MySQL5InnoDBDialect? 如果是的话,应该没有问题的,看我给你的那个测试用例
@Lob还取决于你的返回类型,那个测试用例(包括同包下的其他的)可以看看

我用的确实是MySQL5InnoDBDialect,我就是看了那些测试用例,才知道有个@Type类型的注解,
我在程序上加上@Type(type="text")才行,但不知道什么原因

0 请登录后投票
   发表时间:2010-11-09  
看你的错误提示 还是因为中文乱码引起的
可能是你使用的文本编辑器存在中文编码问题
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics