NutzCN Logo
问答 fetch() 获取不到LONG(oracle)类型字段
发布于 29天前 作者 Leewell1989 93 次浏览 复制 上一个帖子 下一个帖子
标签:

oracle 里边的long类型字段 使用fetch方法查询到的实体对象对应字段没有值。
是个bug吗?

12 回复

POJO类写的字段名确定和数据库一样?数据库字段确定有值?

要是其他属性正常的话,这个属性没写@Column

@Wizzercn @wendal
之前是将数据库的字段类型改为clob了。刚又想起这个问题,根据你们回复又测试了一下,给出测试步骤和结果:
实体类字段定义:

@Column("html")
 public String html;

  @Column("html_1")
   public String html1;

数据库字段定义:

"HTML" CLOB DEFAULT NULL, 
"HTML_1" LONG, 

确定这两个字段有数据;

junit代码:

@Test
    public void fetch() throws Exception {
        System.out.println(Json.toJson(gis.fetch("0735D64C738B47C587FEE85720AD3AE3", 7)));
    }

结果:

{
   "id": "76BE4C03FC0149B5969C8576059D5CB2",
   "itemSeq": 7,
   "type": "P",
   "html": "<div id=\"div-pro\" name=\"div-pro\">\r\n  </div>"
}

结论:就是clob对应字段有值而long类型字段没值。

怎么用个String映射Long?

难道不应该是long吗?

oracle的long是长文本类型,不是数值... 只有number是数值类型...
至于数据库中是数值,如果用String来映射应该也行的通啊,我试一下。

噢,那Clob才是相近的类型-_-

那问题是 如果定义为long, 应该用什么类型来映射?是不是没碰过这种情况,所以目前没有支持到?

刚才的问题试了一下,数据库用number类型,POJO用String来映射也是可以拿到值的

@Column("html")
    public String html;

    @Column("html_1")
    public String html1;

    @Column("html_2")
    public String html2;
"HTML" CLOB DEFAULT NULL, 
"HTML_1" LONG,
"HTML_2" NUMBER(10,2)

fetch()

{
   "id": "76BE4C03FC0149B5969C8576059D5CB2",
   "itemSeq": 7,
   "type": "P",
   "html": "<div id=\"div-pro\" name=\"div-pro\">\r\n  </div>",
   "html2": "222"
}

应该就是Clob了

很突然的绕开了我的问题....

算了,不用考虑了,这个类型也过时,将来可能会被淘汰了,就用clob吧。

添加回复
请先登陆
回到顶部