hibernate取不到某个字段的值

 

之前问过了这个问题没能解决,再发一遍,真心求帮助!!!!!!!!!!!!!!!!

 

很简单的一个测试;用Speak s = (Speak)session.get(Speak.class, 1);得到Speak对象之后,s.getAttachmentFlag()竟然取不到值,确切的说是取到的值为"";真要我小命!

相关代码如下:

 

1、数据库中有speak表,speak表中有attachment_flag字段;

2、attachment_flag字段的getter和setter方法hibernate自动生成的,应该没问题;

3、数据库的配置<mapping resource="com/shaiyaya/dao/Speak.hbm.xml" /> 应该也没问题;

4、测试语句:

 

Session session = HibernateSessionFactory.getSession();  
Transaction tran = session.beginTransaction();  
  
Speak s = (Speak)session.get(Speak.class, 1);  
System.out.println("at:"+s.getAttachmentFlag());  
tran.commit();  
session.close();  
return "success"; 

 其它字段的值都能取到, 但就是取不到attachment_flag字段的值;前几天还是好的啊!为什么?为什么?为什么?

 

speak.hbm.xml里面attachmentFlag字段的配置 

 

<property name="attachmentFlag" type="java.lang.String">  
         <column name="attachment_flag" length="20"></column>  
</property>

 其他字段都是能取出值来的,就是这个字段取不出值;并且我用session.update()方法的时候,不管传什么值,这个字段都是变成"";而其它字段都更新了的。

speak表的DDL:

 

-- Table "speak" DDL  
  
CREATE TABLE `speak` (  
  `speak_id` int(11) NOT NULL auto_increment,  
  `user_id` int(11) default NULL,  
  `content` mediumtext,  
  `create_time` timestamp NULL default NULL on update CURRENT_TIMESTAMP,  
  `last_comm_time` timestamp NULL default NULL COMMENT '后评论最时间',  
  `cate_flag` varchar(50) default NULL COMMENT 'twitter,style,topic',  
  `x_id` int(11) default NULL COMMENT '现表示的是forum的id,先也表示求购分类的id',  
  `attachment_flag` varchar(20) default '0' ,  
  `comment_sum` int(11) default '0' COMMENT '应相的speak被评论的次数',  
  `love_sum` int(11) default '0' COMMENT '对应的speak被喜欢的次数',  
  `forward_sum` int(11) default '0' COMMENT '对应的speak被转发的次数',  
  PRIMARY KEY  (`speak_id`),  
  KEY `user_id` (`user_id`),  
  KEY `love_sum` (`love_sum`),  
  KEY `cate_flag` (`cate_flag`),  
  KEY `attachment_flag` (`attachment_flag`),  
  CONSTRAINT `speak_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE  
) ENGINE=InnoDB DEFAULT CHARSET=gbk;  

 speak.java 

 

package com.shaiyaya.dao;  
  
import java.util.Date;  
/** 
 * Speak entity. 
 *  
 * @author MyEclipse Persistence Tools 
 */  
  
public class Speak implements java.io.Serializable {  
  
    // Fields  
  
    private Integer speakId;  
    private User user;  
    private String content;  
    private Date createTime;  
    private Date lastCommTime;  
    private String cateFlag;  
    private Integer XId;  
    private String attachmentFlag;  
    private Integer commentSum;  
    private Integer loveSum;  
    private Integer forwardSum;  
  
    // Constructors  
  
    /** default constructor */  
    public Speak() {  
    }  
  
    /** full constructor */  
    public Speak(User user, String content, Date createTime, Date lastCommTime,  
            String cateFlag, Integer XId, String attachmentFlag,  
            Integer commentSum, Integer loveSum, Integer forwardSum) {  
        this.user = user;  
        this.content = content;  
        this.createTime = createTime;  
        this.lastCommTime = lastCommTime;  
        this.cateFlag = cateFlag;  
        this.XId = XId;  
        this.attachmentFlag = attachmentFlag;  
        this.commentSum = commentSum;  
        this.loveSum = loveSum;  
        this.forwardSum = forwardSum;  
    }  
  
    // Property accessors  
  
    public Integer getSpeakId() {  
        return this.speakId;  
    }  
  
    public void setSpeakId(Integer speakId) {  
        this.speakId = speakId;  
    }  
  
    public User getUser() {  
        return this.user;  
    }  
  
    public void setUser(User user) {  
        this.user = user;  
    }  
  
    public String getContent() {  
        return this.content;  
    }  
  
    public void setContent(String content) {  
        this.content = content;  
    }  
  
    public Date getCreateTime() {  
        return this.createTime;  
    }  
  
    public void setCreateTime(Date createTime) {  
        this.createTime = createTime;  
    }  
  
    public Date getLastCommTime() {  
        return this.lastCommTime;  
    }  
  
    public void setLastCommTime(Date lastCommTime) {  
        this.lastCommTime = lastCommTime;  
    }  
  
    public String getCateFlag() {  
        return this.cateFlag;  
    }  
  
    public void setCateFlag(String cateFlag) {  
        this.cateFlag = cateFlag;  
    }  
  
    public Integer getXId() {  
        return this.XId;  
    }  
  
    public void setXId(Integer XId) {  
        this.XId = XId;  
    }  
  
    public String getAttachmentFlag() {  
        return this.attachmentFlag;  
    }  
  
    public void setAttachmentFlag(String attachmentFlag) {  
        this.attachmentFlag = attachmentFlag;  
    }  
  
    public Integer getCommentSum() {  
        return this.commentSum;  
    }  
  
    public void setCommentSum(Integer commentSum) {  
        this.commentSum = commentSum;  
    }  
  
    public Integer getLoveSum() {  
        return this.loveSum;  
    }  
  
    public void setLoveSum(Integer loveSum) {  
        this.loveSum = loveSum;  
    }  
  
    public Integer getForwardSum() {  
        return this.forwardSum;  
    }  
  
    public void setForwardSum(Integer forwardSum) {  
        this.forwardSum = forwardSum;  
    }  

 

 

 

0

3个回答

说实话,我也找不到问题了,你把 KEY attachment_flag (attachment_flag),这个也删掉试试,记住重新建表一下

0

attachment_flag varchar(20) default '0' ,
把default '0'去掉试试

0

哎,我确实也看不出来是哪里的问题,可能是我资质问题吧

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
hibernate实现表联查并获取某个字段的最大值(随笔)
最近试用hibernate实现三表连接查询并分组显示某个字段的最大值,在mysql中语句可以运行,改成hql无法运行,遂写下随笔以记录 mysql中查询,可以查询到相应的结果 改写成hql语句 "select o.equipment.equId, o.olderName , e1.power, max(opr.oTime),e1.location from Older o ,Equi
hibernate突然取不到某个字段的值
PS:在ITeye上面问了两次都没能解决问题,不给力啊。rnrn很简单的一个测试;用Speak s = (Speak)session.get(Speak.class, 1);得到Speak对象之后,s.getAttachmentFlag()竟然取不到值,确切的说是取到的值为"";真要我小命!rnrn相关代码如下:rnrn rnrn1、数据库中有speak表,speak表中有attachment_flag字段;rnrn2、attachment_flag字段的getter和setter方法hibernate自动生成的,应该没问题;rnrn3、数据库的配置 应该也没问题;rnrn4、测试语句:rnrnrn[code=Java]rnSession session = HibernateSessionFactory.getSession(); rnTransaction tran = session.beginTransaction(); rn rnSpeak s = (Speak)session.get(Speak.class, 1); rnSystem.out.println("at:"+s.getAttachmentFlag()); rntran.commit(); rnsession.close(); rnreturn "success"; rn[/code]rnrn其它字段的值都能取到, 但就是取不到attachment_flag字段的值;前几天还是好的啊!好像是加了索引什么的就这样了,不知道是不是原因。不过删除了索引speak的所有索引也没解决问题……rnrn rnspeak.hbm.xml里面attachmentFlag字段的配置 rn[code=XML]rn rn rn rn[/code]rnrn 其他字段都是能取出值来的,就是这个字段取不出值;并且我用session.update()方法的时候,不管传什么值,这个字段都是变成"";而其它字段都更新了的。rnrnspeak表的DDL:rn[code=Java]rn-- Table "speak" DDL rn rnCREATE TABLE `speak` ( rn `speak_id` int(11) NOT NULL auto_increment, rn `user_id` int(11) default NULL, rn `content` mediumtext, rn `create_time` timestamp NULL default NULL on update CURRENT_TIMESTAMP, rn `last_comm_time` timestamp NULL default NULL COMMENT '后评论最时间', rn `cate_flag` varchar(50) default NULL COMMENT 'twitter,style,topic', rn `x_id` int(11) default NULL COMMENT '现表示的是forum的id', rn `attachment_flag` varchar(20) default '0' , rn `comment_sum` int(11) default '0' COMMENT '应相的speak被评论的次数', rn `love_sum` int(11) default '0' COMMENT '对应的speak被喜欢的次数', rn `forward_sum` int(11) default '0' COMMENT '对应的speak被转发的次数', rn PRIMARY KEY (`speak_id`), rn KEY `user_id` (`user_id`), rn KEY `love_sum` (`love_sum`), rn KEY `cate_flag` (`cate_flag`), rn KEY `attachment_flag` (`attachment_flag`), rn CONSTRAINT `speak_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE rn) ENGINE=InnoDB DEFAULT CHARSET=gbk; rn[/code]rnrnspeak.javarn[code=Java]rnpackage com.shaiyaya.dao; rn rnimport java.util.Date; rn/** rn * Speak entity. rn * rn * @author MyEclipse Persistence Tools rn */ rn rnpublic class Speak implements java.io.Serializable rn rn // Fields rn rn private Integer speakId; rn private User user; rn private String content; rn private Date createTime; rn private Date lastCommTime; rn private String cateFlag; rn private Integer XId; rn private String attachmentFlag; rn private Integer commentSum; rn private Integer loveSum; rn private Integer forwardSum; rn rn // Constructors rn rn /** default constructor */ rn public Speak() rn rn rn /** full constructor */ rn public Speak(User user, String content, Date createTime, Date lastCommTime, rn String cateFlag, Integer XId, String attachmentFlag, rn Integer commentSum, Integer loveSum, Integer forwardSum) rn this.user = user; rn this.content = content; rn this.createTime = createTime; rn this.lastCommTime = lastCommTime; rn this.cateFlag = cateFlag; rn this.XId = XId; rn this.attachmentFlag = attachmentFlag; rn this.commentSum = commentSum; rn this.loveSum = loveSum; rn this.forwardSum = forwardSum; rn rn rn // Property accessors rn rn public Integer getSpeakId() rn return this.speakId; rn rn rn public void setSpeakId(Integer speakId) rn this.speakId = speakId; rn rn rn public User getUser() rn return this.user; rn rn rn public void setUser(User user) rn this.user = user; rn rn rn public String getContent() rn return this.content; rn rn rn public void setContent(String content) rn this.content = content; rn rn rn public Date getCreateTime() rn return this.createTime; rn rn rn public void setCreateTime(Date createTime) rn this.createTime = createTime; rn rn rn public Date getLastCommTime() rn return this.lastCommTime; rn rn rn public void setLastCommTime(Date lastCommTime) rn this.lastCommTime = lastCommTime; rn rn rn public String getCateFlag() rn return this.cateFlag; rn rn rn public void setCateFlag(String cateFlag) rn this.cateFlag = cateFlag; rn rn rn public Integer getXId() rn return this.XId; rn rn rn public void setXId(Integer XId) rn this.XId = XId; rn rn rn public String getAttachmentFlag() rn return this.attachmentFlag; rn rn rn public void setAttachmentFlag(String attachmentFlag) rn this.attachmentFlag = attachmentFlag; rn rn rn public Integer getCommentSum() rn return this.commentSum; rn rn rn public void setCommentSum(Integer commentSum) rn this.commentSum = commentSum; rn rn rn public Integer getLoveSum() rn return this.loveSum; rn rn rn public void setLoveSum(Integer loveSum) rn this.loveSum = loveSum; rn rn rn public Integer getForwardSum() rn return this.forwardSum; rn rn rn public void setForwardSum(Integer forwardSum) rn this.forwardSum = forwardSum; rn rn[/code]rnrnrn
判断记录是否存在,取某个特定字段值,取多个字段值
Delphi,判断记录是否存在,取某个特定字段值,取多个字段值 自己工作总结,逐步增加
Hibernate如何只取出需要的字段
mysql我们在写sql语句的时候都知道怎么查找需要的字段,那么Hibernate怎么写呢? 首先看下我们的数据库表(案例)。 首先我们要知道mysql怎么写呢? 例如我们只需要numberId和number select u.numberId,u.number from number_pool u where u.numberId = 1; 在mysql中运行正确。 mys...
hibernate用hql怎么查询某个字段
List results = session.find("select count(*), avg(user.age) from User as user"); ListIterator iterator = results.listIterator(); Object[] rows = (Object[]) iterator.next(); System.out.pri
hibernate 查询东西,得到一系列一个字段一样的数据
原因是没有主键,hbm设置错,可能有两个主键,设置好主键就行
hql 按照某个字段排序,并取前10条记录
String sql=&quot;from PsPatrolMission a order by a.createTime desc where rownum &amp;lt;= 10&quot;;  
Mybatis下部分字段值无法获取(null)
本博客致力于提供一些开发中常遇到的坑以及解决思路,大家可以多多关注~~~~ 今天在使用mybatis-plus做多表间查询的时候,遇到了一个问题,多表查询时,存在部分字段无法获取到值,但是其它字段却没问题。于是本人尝试单独获取各个表的字段值发现都没问题,最后查阅了资料发现是原来我在表中存在带下划线的字段的原因。 解决之前: 数据库字段 pojo 从上面不难看出我p
Hibernate统计一个字段的多个可能值
[b]问题[/b]:针对一张表的一个字段,想要统计其出现的不同值的次数,并封装为对象集合返回。 [b]坑点[/b]: 1.hql语句中sum()返回一个long值,所以如果定义的对象实体类字段为int型,则会报错。 2.要想日期直接用比较,必须保持日期格式,例如2014/01/01 [b]代码[/b]:[code=&quot;java&quot;] Query query = this .ge...
关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
Hibernate写入时间时获取不了时分秒的解决方法
将实体类所对应的映射文件**.hbm.xml中的 数据type=”date”改为type=”Java.util.Date”
hibernate中的query查询原生sql语句,如何获得返回记录中的每一个字段的值
解决办法: Query query=session.createSQLQuery(sql) .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); List list=query.list();用这个方法可以把数据库查询出来的每一行封装成一个Map类型,Key为数据库字段,Value为值,然后把这些Map放到了一个List
hibernate获取数据获取不到,没有报错
问题:使用hibernate4+mysql5,数据库中有内容,但hibernate获取不到,而且无报错。 解决方案: 确保输入参数正确; 看看hibernate扫描的entity包路径对不对。
使用Hibernate获取最大值(max)的三种方法
转:http://blog.csdn.net/zzr173/archive/2008/12/12/3504856.aspx 获取最大值的三种方法:1. 使用 hsqlLong l = (Long)getSession().createQuery("select max(a.sn) from T a " ).uniqueResult();System.out.println(c);注意:
在hibernate中只想更新某表中的某一字段
在mapping配置文件中,把你不要update的property节点中的update属性设为false   加上dynamic-update=&quot;true&quot;,就只更新修改了的字段   &amp;lt;hibernate-mapping   &amp;gt;           &amp;lt;class                   name= &quot;ClassName &quot;                   tabl...
使用hibernate某个属性值保存不进去,update=false
今天遇到一个比较奇怪的问题,通过hibernate对一个对象进行更新操作,其他的属性都能更新进去,只有一个怎么都更新不进去,在更新前和更新后做了打印输出也有值。 通过打印sql的方式发现就没有对这个属性值进行更新, 检查hibernate配置文件发现 update="false" />属性上不小心增加了update="false" 属性。
Hibernate中对表某个字段排序
Hibernate中对表某个字段排序,直接在配置里面实现排序功能。
mybatis或者hibernate 获取query执行后返回Object的字段值
第一种方法:  public static String getValue(String id,String siteId,String modelName,String fieldName) throws IllegalArgumentException, IllegalAccessException {         Object obj=ModelUtilRPC.select(
hibernate实现查询某实体的某个字段的多个值的对应实体列表
在使用hibernate和数据库交互时,可以是使用hibernate的session的各种操作数据库方法,在实际使用中也常常结合hbm.xml文件里写好的query执行块,再通过setParameter方式设置参数后执行查询获取结果。其中经常使用的一个场景----hibernate实现查询某实体的某个字段的多个值的HQL---- ,总是忘记怎么写:解决办法:hibernate实现查询某个字段的多个...
表中字段值为NULL时,hibernate查询不会返回该字段
在使用Hibernate HQL语句查询时,这些Null字段,在查询结果集中是不会出现的建议,插入时,要插入所有字段,字符串默认值可以用双引号,整型默认值可以用0,这样查询结果集中会返回该表中的所有字段FR:徐海涛(hunk Xu)
Hibernate 接收count(*) 等多个字段值
HQL:select author,count(*) from test where author=&quot;admin&quot; List results = session.createQuery(hql).list(); for (Iterator iterator = results.Iterator(); iterator.hasNext(); ) { Object[]...
hibernate中实体的关联数据字典的字段的显示问题
hibernate中实体的关联数据字典的字段在页面显示问题完美解决方案: 在设施实体类,设施类型fclyType存的是数据字典SysParams的paramsValue(但页面要显示paramsName)。 假如tb_facility_info表的一条记录的fcly_type字段存的值是01,而在数据字典sys_params中paramsValue字段的值为01所对应的paramsNa
关于更新部分属性,Hibernate更新某些字段的几种update方法
1.在hbm.xml中设置property 标签 update = “false” 例如         我们在执行 Update方法会发现,age 属性 不会被更改,缺点:不灵活。     Hibernate:         UPDATE         Teacher         SET         birthday=?,         name=?,  
Hibernate @Transient : 标识不和数据库字段进行映射的临时属性
一、问题的引出:
hibernate查询oracle数据库记录,一个字段为NULL整条记录就NULL的解决办法
1 问题描述 数据库表如下,选出来的这行有几个属性值为NULL,其中第4列 的QI oracle类型为number 实体类部分如下,其中 qi对应数据库表中的QI列,类型为double 使用sql语句在navicat中能正确查出数据,可是在hibernate中,查出的是空 2 解决办法 将实体类中的 类型为double 都改为 它的包装类Double就可以了。 3 问题原因 这个我目前也不清...
Hibernate懒加载问题导致View层无法获取关联数据的问题
在controller中查询出了一个数据,数据关联了另外一个对象,在页面中用A.GETB().GETXXX()的方式的时候就会报错,因为是懒加载,默认的session已经关闭了。解决问题的方式有以下几种 1.最常用的方式,如果是SSH框架的话,可以这么用。在配置文件中加入以下内容 <!-- 使用spring解决懒加载问题 但是这种方法也是有缺点的,缺点就是延长了session关闭的时
oracle/hibernate查询clob字段值死活都为null
先说下背景:我新入职公司不到两个月,我们的项目采用的tomcat配置文件链接项目webapp,同时由tomcat管理数据源(即在tomcat目录下conf\Catalina\localhost中配置项目路径兼数据源),eg: <Resource name="StandardWorkDataSource" driverClassName="oracle.jdbc.driver.Orac
Hibernate取得最大值
使用Hibernate获取最大值(max)的三种方法 获取最大值的三种方法: 1. 使用 hsql Integer c = (Integer)dbt.getSession().createQuery(&quot;select max(a.ArticleId) from Article a &quot; ).uniqueResult(); System.out.println(c); 注意:...
Hibernate の 如何根据数据库字段查询
HQL和Cretiaria应该都能实现。HQL语言也有两种实现方式:1、使用定位参数,2、绑定命名参数。
Hibernate_query查询数据表中的一个字段.
Hibernate_query查询数据表中的一个字段.
有关Hibernate连接池不够的问题
最近在做一个项目(spring+hibernate)时用到了连接池,我用的是proxool连接池,配置如下:   //==============数据源============== &amp;lt;bean id=&quot;dataSource&quot; class=&quot;org.logicalcobwebs.proxool.ProxoolDataSource&quot;&amp;gt;         &amp;lt;property name=&quot;...
【个人笔记】hql读取json对象中的某个key的值
最近要写hql,有些字段存储的是json对象,而我只需要里面的个别指标,该如何操作? 使用搜索引擎时,输入关键字:hive sql json,(此处感谢我同事,每次的搜索关键字总是拿捏的不够准确) 届时网页上会如愿显示许多我们需要的结果。 此处我只做简单记录。 可以使用 get_json_object 或 json_tuple 1.get_json_object http://blog
hibernate无法获取最新数据
遇到这样一个问题,有时候查询到的数据是修改之前的那条,并且这是个概率问题,有时候查出来的数据是对的,有时候还是以前的问题 代码是这样写的 @Override public UserBean getById(T id) { Session session = HibernateSessionFactory.getSession(); UserBean userBean=(
使用Hibernate修改数据库表中一条记录的某些字段
类似于新闻,当需要修改新闻标题和内容等字段时,对于发布时间,作者等信息需要保留原始的,因此需要修改某些字段,按照普通sql可以只更新某些字段,用Hibernate可以按照以下代码: Session s = HibernateUtil.currentSession(); HibernateUtil.beginTransaction();
hibernate 关联表中有其他属性处理方法
这个示例是为了解决关联表中有其他属性时该怎么配置、及操作。e-r图如下: 一、本例中有三个类,分别为AAA、BBB、RRR,三个类的配置代码如下: import java.util.HashSet; import java.util.Set; import javax.persistence.*; @Entity @Table(name="a") public class AAA
hibernate查找字段
在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况: 1.查询全部字段的情况下,如"from 实体类",list中封装的对象为实体类本身,各属性都将得到填充。 2.只查询一个字段,默认情况下,list中封装的是Object对象。 3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所
Hibernate中如何只更新修改过的字段,未修改的字段不用更新??(3中方法)
1.修改注解:指定某个属性为:@Column(updatable=false),这个标签的意思是:指定某列不在更新的范围内。同时还可以在xml的property 属性中指定update。少用,不灵活2.xml :在xml的配置文件中设置class的属性dynamic-update,如:。在跨Session时,只靠dynamic-update是不行的,因此,用到merge。session2.merge(s);在jpa标准的annotation中没有对应的设置,而hibernate扩展了对应的功能。3.HQL|
Hibernate向有默认值的字段里插入null值引起的异常
当数据库表格中的某一字段设置了默认值default后, 例如: `delFlag` int(2) DEFAULT '0' COMMENT '0正常,1已删除' 但在添加对象时没有对该字段赋值, 即, 没有 这段代码:    object.setDelFlag("0") 直接调用hibernate的save方法保存该对象就会导致添加的字段值为null,default没有起作用,从而引起了
Hibernate中外键值的问题
在学hibernate的时候一直以为外键值是需要自己设置的(没想到是默认关联主键!!!!) 为此我在这里纠结了很久,以为需要在实体类中添加一个外键字段,手动存入外键值(囧)。 既然hibernate是外键默认关联主键,那么我们如果要关联非主键值该怎么做呢? 其实很简单,只需要在多的一方用 property-ref=“你所关联的字段名”。例如: Broker.hbm.xml ........
hibernate出现打印SQL语句读取不到值的情况的解决
当初学hibernate时,曾看到好多人遇到了这样的情况 运行并没有报错,为什么我的SQL语句就是没法读取到值呢,其实这是因为orm元数据配置出现了错误 其实在orm元数据配置文件中,是property,并不是properties,初学者往往不注意,并且该细节IDE工具也不提示。...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 教育大数据字段 数据库课程表字段