[请教]学 Java 学的美滋滋,但是 findBy 方法为啥总返回 null.... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
From313
V2EX    程序员

[请教]学 Java 学的美滋滋,但是 findBy 方法为啥总返回 null....

  •  
  •   From313 2019-10-21 10:40:07 +08:00 5185 次点击
    这是一个创建于 2184 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Repository 是这么写的:

    public default List<acl_accounts> findBySchool_Code(Integer School_Code) { return null; } 

    Controller 是这么写的:

    @Autowired private acl_accountsRepository repository; @GetMapping("/detail") public Result getDetail(@RequestParam("School_Code") Integer School_Code) { return ResultUtil.success(repository.findBySchool_Code(School_Code)); } 
    • 主要就是想通过 School_Code 查数据.
    • 调用接口时传的参数也是对的.
    • 数据库里面也有数据.
    • 但总是返回 null
    • 这是为啥...
    44 条回复    2019-10-22 10:24:16 +08:00
    airfling
        1
    airfling  
       2019-10-21 10:41:25 +08:00
    acl_accountsRepository 这个你是怎么写的
    airfling
        2
    airfling  
       2019-10-21 10:42:12 +08:00
    刚看到,你返回的都 null,还问为啥,你方法都没实现好
    From313
        3
    From313  
    OP
       2019-10-21 10:43:23 +08:00
    @airfling emmm 咋实现...
    Macolor21
        4
    Macolor21  
       2019-10-21 10:48:04 +08:00   1
    看起来用的是 JPA,把 findBySchool_Code 这个方法去掉,看你继承了哪个 Repository 接口,一般 JPA 都实现了 findBy 字段的方法,不用自己再写一个。不行的话试试在 acl_accounts 的 School_Code 属性上面加个 @Column( value ="数据库字段名")
    airfling
        5
    airfling  
       2019-10-21 10:48:05 +08:00
    你如果用 spring data jpa 下面这样就可以

    public interface ComponentRepository extends JpaRepository<Component, Long> {

    List<Component> findBySchool_Code(String School_Code);
    }
    airfling
        6
    airfling  
       2019-10-21 10:49:36 +08:00
    spring data jpa 的接口没必要用 default 关键词去自己实现
    msg7086
        7
    msg7086  
       2019-10-21 10:55:02 +08:00
    返回 null 的原因难道不是你代码第二行返回了 null 吗……
    telami
        8
    telami  
       2019-10-21 10:59:49 +08:00
    。。。。。。
    Leiothrix
        9
    Leiothrix  
       2019-10-21 11:03:28 +08:00
    我佛了
    jrtzxh020
        10
    jrtzxh020  
       2019-10-21 11:05:17 +08:00
    return null 自己写的都看不懂。。。
    haloha
        11
    haloha  
       2019-10-21 11:06:17 +08:00
    你自己 return null 了啊...
    vwym
        12
    vwym  
       2019-10-21 11:07:15 +08:00   1
    JPA 接口不用自己实现,继承 JpaRepository 会自动实现的。
    参考 5 楼的写法就行。
    From313
        13
    From313  
    OP
       2019-10-21 11:07:59 +08:00
    @msg7086 主要我不写这个的话就报错了...

    @airfling 我这边不写 default return null 啥的就报错...


    Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'acl_accountsController': Unsatisfied dependency expressed through field 'repository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'al_accountsRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.xxx.trynetwork.repository.acl_accountsRepository.findBySchool_Code(java.lang.Integer)! No property school found for type acl_accounts!
    TMDlw
        14
    TMDlw  
       2019-10-21 11:08:14 +08:00
    给整笑了
    chocotan
        15
    chocotan  
       2019-10-21 11:10:06 +08:00   2
    看报错信息,下划线的问题吧
    findBySchoolCode

    写 java 的话,命名规则不要特立独行
    xiangbudaomingzi
        16
    xiangbudaomingzi  
       2019-10-21 11:12:00 +08:00
    这哪里来的萌新。。。
    sty
        17
    sty  
       2019-10-21 11:13:11 +08:00
    School_Code 这什么命名方式
    From313
        18
    From313  
    OP
       2019-10-21 11:17:49 +08:00
    @chocotan
    @sty
    我是直接把表上定的复制过来的...
    airfling
        19
    airfling  
       2019-10-21 11:19:40 +08:00   1
    我还以为你还有 school 这张表,jpa 是按照你 java 中的字段来的,不是数据库中的
    jsy123392550
        20
    jsy123392550  
       2019-10-21 11:19:54 +08:00
    大家都撤了吧 我感觉这人在钓鱼
    From313
        21
    From313  
    OP
       2019-10-21 11:33:24 +08:00
    @airfling 找到原因了...就是命名的事儿...谢谢老哥
    HolmLoh
        22
    HolmLoh  
       2019-10-21 11:42:05 +08:00
    我怀疑你再炸鱼
    yinft
        23
    yinft  
       2019-10-21 11:51:14 +08:00   1
    @HolmLoh 我感觉就是,然后成功的把我们都炸出来了
    jadehare
        24
    jadehare  
       2019-10-21 11:54:36 +08:00
    别的不说,你这命名真的,真的会被人打死的
    dhairoot
        25
    dhairoot  
       2019-10-21 11:57:34 +08:00
    命名规范一下好不好
    FightForFreedom
        26
    FightForFreedom  
       2019-10-21 13:18:40 +08:00
    这钓鱼也钓的太钩直饵咸了吧,不过我还是上钩了
    命名太蛋疼了,@Column 搞一下啊
    itechify
        27
    itechify  
    PRO
       2019-10-21 13:31:28 +08:00 via Android
    。。。
    aragakiyuii
        28
    aragakiyuii  
       2019-10-21 13:3831 +08:00 via Android
    命名最好以驼峰式,对应数据库中下划线形式
    chanchan
        29
    chanchan  
       2019-10-21 13:51:57 +08:00
    这命名看得我想给你一拳
    xaplux
        30
    xaplux  
       2019-10-21 13:58:19 +08:00
    看见大家都在喷你的命名,我就放心了
    Yiki888
        31
    Yiki888  
       2019-10-21 13:59:18 +08:00
    楼上加一
    kasper4649
        32
    kasper4649  
       2019-10-21 14:37:42 +08:00 via iPhone
    又是驼峰又是下划线???
    codzzb
        33
    codzzb  
       2019-10-21 14:43:26 +08:00
    hhhhhh
    arthas2234
        34
    arthas2234  
       2019-10-21 14:45:57 +08:00
    我觉得你应该去学习下代码规范
    luoyikang52066
        35
    luoyikang52066  
       2019-10-21 14:54:18 +08:00 via Android
    老子看你命名,想打死你
    mind3x
        36
    mind3x  
       2019-10-21 15:44:56 +08:00 via Android
    大家好,我是鱼
    DebugTy
        37
    DebugTy  
       2019-10-21 17:11:29 +08:00
    看到你这命名,我吐了
    zpm683
        38
    zpm683  
       2019-10-21 17:13:25 +08:00
    因为还没学到家~
    yc8332
        39
    yc8332  
       2019-10-21 17:42:15 +08:00
    大佬。。。你都写了 return null,不返回才怪呢
    LuckyBoyGirl
        41
    LuckyBoyGirl  
       2019-10-21 18:15:07 +08:00
    我的哥
    Drinker
        42
    Drinker  
       2019-10-21 19:20:30 +08:00
    JPA 的持久层不需要实现,是 interface,写出方法即可。
    magiclz233
        43
    magiclz233  
       2019-10-21 22:17:28 +08:00
    你 return 了个 null 当然得到的是 null 还有,命名用驼峰,中间加个_看不懂 而且 jpa 不惜要你写实现 直接 findByCode 就出来了
    q4487979711
        44
    q4487979711  
       2019-10-22 10:24:16 +08:00
    接口命名小写加下划线,6 啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6029 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 01:50 PVG 09:50 LAX 18:50 JFK 21:50
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86