首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
From313
V2EX  ›  程序员

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

  •  
  •   From313 · 165 天前 · 3083 次点击
    这是一个创建于 165 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    public interface ComponentRepository extends JpaRepository<Component, Long> {

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

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