zoukankan      html  css  js  c++  java
  • @Id 和 @column 注解 使用注意

    当@Id写字啊 field 上时 ,如过 把 @column 写在 getter 方法上 ,会出现错误 或者不起作用

    Unknown column 'gecompanys0_.sourcec' in 'field list'; sourcec 为 field 的名称, 数据库名称为 sourceName  

    当时如果把 @column 也写在 field 上 时,就可以正常查询了  。。 

    同样如果把 @Id 注解到 getter 方法上,而把 @column 注解到 field 上,也会同样报上述错误。。

    所以建议 统一 注解 的地方。。建议都注解到getter 方法上。

    原因: 使用Annotations形式的配置方式,默认的访问形式由@Id标记放置的位置决定,当@Id标记在属性上声明,而不是在getter方法上,则所有的其它属性默认采用属性访问形式(即不通过getter和setter方法,直接访问属性)

    以下来自 新浪博客 (commandingofficer)感谢原作者 http://blog.sina.com.cn/s/blog_616e189f0100zrfn.html

    1. 属性访问的类型和特点(4.4.1)

    持久化引擎可以直接或者通过访问器(即get和set方法)访问属性。Hibernate中,使用XML配置形式,通过default-access设置默认的访问形式,可以有四种选项,default-access=”field|property|noop|custom.Class”。而使用Annotations形式的配置方式,默认的访问形式由@Id标记放置的位置决定,当@Id标记在属性上声明,而不是在getter方法上,则所有的其它属性默认采用属性访问形式(即不通过getter和setter方法,直接访问属性)。这种方式是JTA默认的。

    当然,Hibernate提供了一种更灵活的方式,使用@org.hibernate.annotations.AccessType可以更改这种默认配置,策略如下:

    1)如果AccessType在类(实体)级别设置,类中的所有属性都使用这个默认访问方式,除非某个属性在其属性或者getter方法上重写了访问方式,重写访问方式将覆盖默认方式。但是类级别的设置将会重写@Id方式的默认访问方式。

    2)如果实体默认设置或者显示设置了属性访问,在属性上设置AccessType(“property”),更改访问方式为getter/setter

  • 相关阅读:
    docker 使用 记录
    vagrant up 网络问题
    PHPSTORM去除警告波浪线的方法
    vagrant共享目录出现“mount:unknown filesystem type ‘vboxsf‘”错误解决方法(亲测可行)
    SVN比较本地相对于上一版本的修改
    Mysql on duplicate key update用法及优缺点
    win10中PHPstorm 里面Terminal 不能使用 esc键吗退出编辑模式吗
    在docker 上安装lnmp 环境
    经典算法题每日演练——第九题 优先队列
    经典算法题每日演练——第十二题 线段树
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/4650807.html
Copyright © 2011-2022 走看看