Spring Data JPA的findAll()或findById()在Spring Boot中返回了错误的值。

huangapple go评论62阅读模式
英文:

Spring Data JPA findAll() or findbyId() return wrong value in spring boot

问题

我目前在尝试从SQL Server检索数据时遇到了findAll()方法的问题,以下是我的代码:

Alien(外星人):

@Entity
public class Alien {
    @Id
    private String aid;
    private String name;
    private String tech;
}

AlienController(外星人控制器):

@Controller
public class AlienController {

    @Autowired
    AlienRepository repo;

    @RequestMapping("/")
    public String home() {
        return "home.jsp";
    }

    @RequestMapping("/getAliens")
    @ResponseBody
    public String getAlien() {
        return repo.findAll().toString();
    }
}

Repository(仓库):

public interface AlienRepository extends CrudRepository<Alien, String> {

}

我的问题是,每当我尝试检索DB中的所有外星人时,通常会得到以下值:

[com.example.demo.model.Alien@1f012f9c, com.example.demo.model.Alien@553ee2df, com.example.demo.model.Alien@67c572ce]

通常应返回外星人的aid、name和tech的值,但我得到的只是上述内容。

英文:

I'm currently struggling with findAll() method when I try to retrieve data from SQL Server
here are my code:

Alien:

 @Entity
public class Alien {
	@Id
	private String aid;
	private String name;
	private String tech;

AlienController:

@Controller
public class AlienController {

@Autowired
AlienRepository repo;

@RequestMapping(&quot;/&quot;)
public String home() {
	return &quot;home.jsp&quot;;
}
@RequestMapping(&quot;/getAliens&quot;)
@ResponseBody
public String getAlien() {
	return repo.findAll().toString();
  }
}

Repository

public interface AlienRepository extends CrudRepository&lt;Alien, String&gt;{

}

And my problem is whenever I try to retrieve all the Aliens in my DB I usually got this value

[com.example.demo.model.Alien@1f012f9c, com.example.demo.model.Alien@553ee2df, com.example.demo.model.Alien@67c572ce]

Usually it has to return the value of the Alien like aid , name and tech but all I got is this

答案1

得分: 0

您可以发送数据作为 List<Alien> 并使用 MediaType.APPLICATION_JSON_VALUE 来获取 JSON 响应。

@RequestMapping("/getAliens", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Alien> getAlien() {
    return repo.findAll();
}

或者如果您想将列表作为字符串返回,可以在 Alien 类中定义 toString 方法。

英文:

You can send the data as List&lt;Alien&gt; and use MediaType.APPLICATION_JSON_VALUE to get json response

  @RequestMapping(&quot;/getAliens&quot;, produces = MediaType.APPLICATION_JSON_VALUE)
  @ResponseBody
  public List&lt;Alien&gt; getAlien() {
    return repo.findAll();
  }

Or define toString method in Alien class if you want to return list as string

答案2

得分: 0

com.example.demo.model.Alien@1f012f9ctoString() 方法的默认实现返回的。

在你的 Alien 类中添加 toString() 方法。

示例:

@Entity
public class Alien {

  @Id
  private String aid;
  private String name;
  private String tech;

  @Override
  public String toString() {
    return "Alien{" +
            "aid='" + aid + '\'' +
            ", name='" + name + '\'' +
            ", tech='" + tech + '\'' +
            '}';
  }
}
英文:

Value com.example.demo.model.Alien@1f012f9c is returned by default implementaion of toString() method.

Add toString() you Alien class.

Example:

@Entity
public class Alien {

  @Id
  private String aid;
  private String name;
  private String tech;

  @Override
  public String toString() {
    return &quot;Alien{&quot; +
            &quot;aid=&#39;&quot; + aid + &#39;\&#39;&#39; +
            &quot;, name=&#39;&quot; + name + &#39;\&#39;&#39; +
            &quot;, tech=&#39;&quot; + tech + &#39;\&#39;&#39; +
            &#39;}&#39;;
}

}

huangapple
  • 本文由 发表于 2020年8月7日 20:16:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/63301674.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定