• 请不要在回答技术问题时复制粘贴 AI 生成的内容
From313
V2EX  ›  程序员

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

  •  
  •   From313 · Oct 21, 2019 · 6217 views
    This topic created in 2581 days ago, the information mentioned may be changed or developed.

    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 replies  •  2019-10-22 10:24:16 +08:00
    airfling
    airfling
    Oct 21, 2019
    1
    acl_accountsRepository 这个你是怎么写的
    airfling
    airfling
    Oct 21, 2019
    2
    刚看到,你返回的都 null,还问为啥,你方法都没实现好
    From313
    From313
    OP
    Oct 21, 2019
    3
    @airfling emmm 咋实现...
    Macolor21
    Macolor21
    Oct 21, 2019❤️1
    4
    看起来用的是 JPA,把 findBySchool_Code 这个方法去掉,看你继承了哪个 Repository 接口,一般 JPA 都实现了 findBy 字段的方法,不用自己再写一个。不行的话试试在 acl_accounts 的 School_Code 属性上面加个 @Column( value ="数据库字段名")
    airfling
    airfling
    Oct 21, 2019
    5
    你如果用 spring data jpa 下面这样就可以

    public interface ComponentRepository extends JpaRepository<Component, Long> {

    List<Component> findBySchool_Code(String School_Code);
    }
    airfling
    airfling
    Oct 21, 2019
    6
    spring data jpa 的接口没必要用 default 关键词去自己实现
    msg7086
    msg7086
    Oct 21, 2019
    7
    返回 null 的原因难道不是你代码第二行返回了 null 吗……
    telami
    telami
    Oct 21, 2019
    8
    。。。。。。
    Leiothrix
    Leiothrix
    Oct 21, 2019
    9
    我佛了
    jrtzxh020
    jrtzxh020
    Oct 21, 2019
    10
    return null 自己写的都看不懂。。。
    haloha
    haloha
    Oct 21, 2019
    11
    你自己 return null 了啊...
    vwym
    vwym
    Oct 21, 2019❤️1
    12
    JPA 接口不用自己实现,继承 JpaRepository 会自动实现的。
    参考 5 楼的写法就行。
    From313
    From313
    OP
    Oct 21, 2019
    13
    @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 'acl_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
    TMDlw
    Oct 21, 2019
    14
    给👴整笑了
    chocotan
    chocotan
    Oct 21, 2019❤️2
    15
    看报错信息,下划线的问题吧
    findBySchoolCode

    写 java 的话,命名规则不要特立独行
    xiangbudaomingzi
    xiangbudaomingzi
    Oct 21, 2019
    16
    这哪里来的萌新。。。
    sty
    sty
    Oct 21, 2019
    17
    School_Code 这什么命名方式
    From313
    From313
    OP
    Oct 21, 2019
    18
    @chocotan
    @sty
    我是直接把表上定的复制过来的...
    airfling
    airfling
    Oct 21, 2019❤️1
    19
    我还以为你还有 school 这张表,jpa 是按照你 java 中的字段来的,不是数据库中的
    jsy123392550
    jsy123392550
    Oct 21, 2019
    20
    大家都撤了吧 我感觉这人在钓鱼
    From313
    From313
    OP
    Oct 21, 2019
    21
    @airfling 找到原因了...就是命名的事儿...谢谢老哥
    HolmLoh
    HolmLoh
    Oct 21, 2019
    22
    我怀疑你再炸鱼
    yinft
    yinft
    Oct 21, 2019❤️1
    23
    @HolmLoh 我感觉就是,然后成功的把我们都炸出来了
    jadehare
    jadehare
    Oct 21, 2019
    24
    别的不说,你这命名真的,真的会被人打死的
    dhairoot
    dhairoot
    Oct 21, 2019
    25
    命名规范一下好不好
    FightForFreedom
    FightForFreedom
    Oct 21, 2019
    26
    这钓鱼也钓的太钩直饵咸了吧,不过我还是上钩了
    命名太蛋疼了,@Column 搞一下啊
    itechify
    itechify
    Oct 21, 2019 via Android
    27
    。。。
    aragakiyuii
    aragakiyuii
    Oct 21, 2019 via Android
    28
    命名最好以驼峰式,对应数据库中下划线形式
    chanchan
    chanchan
    Oct 21, 2019
    29
    这命名看得我想给你一拳
    xaplux
    xaplux
    Oct 21, 2019
    30
    看见大家都在喷你的命名,我就放心了
    Yiki888
    Yiki888
    Oct 21, 2019
    31
    楼上加一
    kasper4649
    kasper4649
    Oct 21, 2019 via iPhone
    32
    又是驼峰又是下划线???
    codzzb
    codzzb
    Oct 21, 2019
    33
    hhhhhh
    arthas2234
    arthas2234
    Oct 21, 2019
    34
    我觉得你应该去学习下代码规范
    luoyikang52066
    luoyikang52066
    Oct 21, 2019 via Android
    35
    老子看你命名,想打死你
    mind3x
    mind3x
    Oct 21, 2019 via Android
    36
    大家好,我是鱼
    DebugTy
    DebugTy
    Oct 21, 2019
    37
    看到你这命名,我吐了
    zpm683
    zpm683
    Oct 21, 2019
    38
    因为还没学到家~
    yc8332
    yc8332
    Oct 21, 2019
    39
    大佬。。。你都写了 return null,不返回才怪呢
    LuckyBoyGirl
    LuckyBoyGirl
    Oct 21, 2019
    41
    我的哥
    Drinker
    Drinker
    Oct 21, 2019
    42
    JPA 的持久层不需要实现,是 interface,写出方法即可。
    magiclz233
    magiclz233
    Oct 21, 2019
    43
    你 return 了个 null 当然得到的是 null 还有,命名用驼峰,中间加个_看不懂 而且 jpa 不惜要你写实现 直接 findByCode 就出来了
    q4487979711
    q4487979711
    Oct 22, 2019
    44
    接口命名小写加下划线,6 啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1020 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 146ms · UTC 19:22 · PVG 03:22 · LAX 11:22 · JFK 14:22
    ♥ Do have faith in what you're doing.