Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring gradle:程序在Java类中返回null,但在PHPMyadmin中不返回null_Java_Spring Boot_Gradle_Discord - Fatal编程技术网

Spring gradle:程序在Java类中返回null,但在PHPMyadmin中不返回null

Spring gradle:程序在Java类中返回null,但在PHPMyadmin中不返回null,java,spring-boot,gradle,discord,Java,Spring Boot,Gradle,Discord,这是我第一次使用SpringBoot和Gradle制作一个连接到DB的discord机器人。我学习了一些教程,discord机器人工作正常,但是当我想调用我的DB时,它在Java中返回null。我试图在PHPmyadmin中使用相同的查询来查看它是否真的为null,但实际上,它应该返回一个值 这是我的主课 @SpringBootApplication public class Main { private static Logger logger = LogManager.getLog

这是我第一次使用SpringBoot和Gradle制作一个连接到DB的discord机器人。我学习了一些教程,discord机器人工作正常,但是当我想调用我的DB时,它在Java中返回null。我试图在PHPmyadmin中使用相同的查询来查看它是否真的为null,但实际上,它应该返回一个值

这是我的主课

@SpringBootApplication
public class Main {

    private static Logger logger = LogManager.getLogger(Main.class);

    /**
     * The entrance point of our program.
     *
     * @param args The arguments for the program. The first element should be the bot's token.
     */

    public static void main(String[] args) {
//        if (args.length < 1) {
//            System.err.println("Please provide a valid token as the first argument!");
//            return;
//        }

        SpringApplication.run(Main.class, args);

        // Enable debugging, if no slf4j logger was found
        FallbackLoggerConfiguration.setDebug(true);

        // The token is the first argument of the program
        String token = "Nzg3NTI4MTU0MDM3MjIzNDU2.X9WQvw.Ix9zeiZB5KWwGkxfUAU0pjy4xF0";

        // We login blocking, just because it is simpler and doesn't matter here
        DiscordApi api = new DiscordApiBuilder().setToken(token).login().join();

        // Print the invite url of the bot
        logger.info("You can invite me by using the following url: " + api.createBotInvite());

    

        // Add listeners
        api.addMessageCreateListener(new CommandManager("!")); // <-- I want to run this command

        // Log a message, if the bot joined or left a server
        api.addServerJoinListener(event -> logger.info("Joined server " + event.getServer().getName()));
        api.addServerLeaveListener(event -> logger.info("Left server " + event.getServer().getName()));
    }

}
对于这个类,我有一个configurationManager

@Configuration
public class ConfigurationManager {
    @Bean
    public CommandManager commandManager() {
        return new CommandManager("!");
    }
}
我要测试的命令是!谁是noraneko,这将引导我访问NijiMemberCommand.java

@Component
public class NijiMemberCommand implements MessageCreateListener {
    @Autowired
    MemberListService memberListService;

    private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(Main.class);

    @Override
    public void onMessageCreate(MessageCreateEvent event){

        String[] command = event.getMessageContent().split(" ");
        if (command.length == 1) {
            logger.info("Will it enter here? no?");
            event.getChannel().sendMessage("You are missing argument, the command is consist of !member <name of liver>");
            return;
        }
        
        event.getChannel().sendMessage(memberListService.visual(command[1]));
        logger.info("Please enter here..... " + command[1] + " " + memberListService.visual(command[1]));
        event.getChannel().sendMessage(memberListService.visual(command[1]));
        return;

    }
}
这是我的数据库

@Repository
@EnableJpaRepositories
public interface MemberListDB extends JpaRepository<MemberListModel, Long> {
    @Query(value = "select m.visual FROM member_list as m, nickname AS n WHERE n.nick_id = m.nick AND n.nickname=:w", nativeQuery = true)
    String showVisual(@Param("w") String nama);
}
///编辑 这就是错误所在

2020-12-20 15:37:54.405 ERROR 11840 --- [utorService - 1] o.j.core.util.event.EventDispatcherBase  : Unhandled exception in a listener thread for FFJ THREAD EMPORIUM!

java.lang.NullPointerException: null
    at com.nijicord.nijiworld.command.NijiMemberCommand.onMessageCreate(NijiMemberCommand.java:27) ~[main/:na]
    at com.nijicord.nijiworld.command.CommandManager.onMessageCreate(CommandManager.java:44) ~[main/:an]
///Edit
我已经用流程和代码编辑了我的原始帖子。

您在这里使用的是
nama.toUpperCase()

    @Override
    @Transactional
    public String visual(String nama) {
        logger.info("Masuk "+ nama);
        return memberListDB.showVisual(nama.toUpperCase());
    }

但在查询中,您使用的是小写的昵称,例如,
noraneko
。我想这可能是个问题。您使用的是大写而不是小写

您是否看到日志中的字符串“Masuk the_name_what_was_passed”?它没有显示出来。确定。那么command.length呢?它等于什么?命令长度是2。表是如何定义的?我使用大写字母,因为在我的数据库中它是“Noraneko”而不是“Noraneko”。这就是为什么我使用大写,所以如果我输入“noraneko”或“noraneko”-它将返回我想要的结果nama.toUpperCase()将使noraneko成为noraneko,而不是noraneko。NORANEKO是否返回您想要的结果?啊,可能这就是它返回null的原因。我将尝试找到一个命令,它可以将其转换为“Noraneko”,然后尝试。如果它运行正常,我会将此帖子标记为答案。您可以在日志中使用参数监视sql。将org.hibernate.SQL设置为debug,将org.hibernate.type.descriptor.SQL设置为trace。它将向您显示确切的SQL和参数。我尝试过,但我刚刚意识到问题不在SQL本身内部,因为在服务中-日志应该显示“Masuk Noraneko”,但当我运行它时,它只显示NullPointerException。我将在我原来的帖子中添加错误的细节。
package com.nijicord.nijiworld.db.Model;



import com.nijicord.nijiworld.db.Repository.MemberListDB;
import com.sun.istack.NotNull;

import javax.persistence.*;
import java.io.Serializable;

/**
 * This is the table model that will hold the majority of member's info
 */
@Entity
@Table(name = "member_list")
public class MemberListModel implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "nick")
    private Long nick_id;

    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "social_media")
    private Long social_id;


    @NotNull
    @Column(name = "name")
    private String name;

    @NotNull
    @Column(name = "branch")
    private String branch;

    @NotNull
    @Column(name = "debut_3d")
    private boolean debut;


    @Column(name = "illustrator")
    private String illustrator;

    @NotNull
    @Column(name = "visual")
    private String visual;

    public Long getNick_id() {
        return nick_id;
    }

    public void setNick_id(Long nick_id) {
        this.nick_id = nick_id;
    }

    public Long getSocial_id() {
        return social_id;
    }

    public void setSocial_id(Long social_id) {
        this.social_id = social_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBranch() {
        return branch;
    }

    public void setBranch(String branch) {
        this.branch = branch;
    }

    public boolean isDebut() {
        return debut;
    }

    public void setDebut(boolean debut) {
        this.debut = debut;
    }

    public String getIllustrator() {
        return illustrator;
    }

    public void setIllustrator(String illustrator) {
        this.illustrator = illustrator;
    }

    public String getVisual() {
        return visual;
    }

    public void setVisual(String visual) {
        this.visual = visual;
    }
}
2020-12-20 15:37:54.405 ERROR 11840 --- [utorService - 1] o.j.core.util.event.EventDispatcherBase  : Unhandled exception in a listener thread for FFJ THREAD EMPORIUM!

java.lang.NullPointerException: null
    at com.nijicord.nijiworld.command.NijiMemberCommand.onMessageCreate(NijiMemberCommand.java:27) ~[main/:na]
    at com.nijicord.nijiworld.command.CommandManager.onMessageCreate(CommandManager.java:44) ~[main/:an]
    @Override
    @Transactional
    public String visual(String nama) {
        logger.info("Masuk "+ nama);
        return memberListDB.showVisual(nama.toUpperCase());
    }