所以,我的问题在于title-crudepository方法findAll()
返回一个空列表。我重写了Crud的方法,因为它返回的是iterable而不是list。
我尝试使用JpaRepository
而不是crudepository
(当时我没有覆盖findAll()
方法),但得到了相同的结果。
我的代码:
Event.java
@Data
@Entity
@NoArgsConstructor
public class Event{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable=false)
private String name;
@Column(nullable=false)
private LocalDateTime time;
@ManyToOne
@JoinColumn
private City city;
}
城市JAVA
@Data
@Entity
@NoArgsConstructor
public class City {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable=false)
private Long code;
@Column(nullable=false)
private String name;
@OneToMany(mappedBy = "city", cascade = CascadeType.ALL)
private Set<Event> events;
}
CityRepository.java
@Repository
public interface CityRepository extends CrudRepository<City, Long> {
@Override
List<City> findAll();
}
事件Controller.java
@Controller
@RequestMapping
public class EventsController {
@Autowired
static CityRepository cityRepository;
public static List<Event> eventList = new ArrayList<>();
@RequestMapping
public String eventEntry(Model model) {
model.addAttribute("event", new Event());
model.addAttribute("cities", cityRepository.findAll());
return "eventEntry";
}
}
事件条目。html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Event entry</title>
</head>
<body>
<h3>New event</h3>
<form method="POST" th:object="${event}">
<div class="form-group">
<label for="city">City: </label>
<select th:field="*{city}">
<option value="" >Choose a city</option>
<option th:each="city : ${cities}" th:value="${city}" th:text="${city}"></option>
</select>
<span class="validation-error" th:if="${#fields.hasErrors('city')}" th:errors="*{city}">City Error</span>
</div>
<div class="form-group">
<label for="name">Name: </label>
<input type="text" th:field="*{name}" />
<span class="validation-error" th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</span>
</div>
<div class="form-group">
<label for="time">Time: </label>
<input type="datetime-local" th:field="*{time}" />
<span class="validation-error" th:if="${#fields.hasErrors('time')}" th:errors="*{time}">Time Error</span>
</div>
<div class="form-group">
<input type="submit" th:value="Save">
</div>
</form>
</body>
我正在使用一个嵌入式H2数据库,其中有一个用于将数据填充到数据库中的data.sql
文件(我没有schema.sql
文件,因为表是使用注释创建的)。当查看H2数据库控制台并使用SELECT*from CITY
时,我得到了城市的列表。
我在EventController类的这一行得到了一个NullPointerExctive
:model.add属性("城市",cityRepository.findAll());
有人能解释一下为什么吗?
删除了存储库前面的静态
声明,现在可以正常工作了
正如您在这里看到的,基本的程序流程是将一个param传递到这条路由,它用param设置的值创建一个新的用户对象(当前只有“role”,但我希望它会随着时间的推移而改变) 然后,findAll方法查找role=角色参数值的所有记录; 换句话说,我的SQL查询将如下所示: 在role=“admin”处运行此查询当前返回1条记录,这是预期的。 但是上面java代码中的findAll(示例)返回0条记录。
我试图使用JPA findAll获取所有记录。如果我在终端中运行相同的查询,结果会得到一些行,但不是通过JPA。我在stackoverflow上尝试了其他答案,但都不起作用。我尝试添加公共getter和setter,尽管我假设这是通过注释完成的。 型号类别: 服务等级: 编辑:添加存储库代码:
问题内容: 我正在尝试编写一个用于与last.fm API进行交互的小脚本。 我有一点使用的经验,但是以前使用它的方式似乎无效,而是返回一个空列表。 我删除了API密钥,因为我不知道它到底应该有多私密,并举了一个示例,说明了我在该位置接收的XML。 与API交互的类: 调用的get_now_playing方法: 我收到的xml样本: 问题答案: 问题在于, 如果给定标签名称,则仅搜索元素的直接后代
我正在使用Spring Data JPA: 使用Spring 4.3.7。释放并Hibernate5.2.9。最终的 当我使用findAll查询时,List返回包含空值。 实体: 注:请注意,问题并不是来自lombock,我已经用getter和setter进行了测试。 仓库: 服务:
我试图获取一个列表从数据库和findAll()返回空列表。我有多个jpa存储库,但只有一个不工作。这是代码: 这就是实体: 当我调用product类别epository.findAll()时,它返回空列表,因此我在数据库中有许多条目。谢谢你的帮助!
我为此使用了一个服务类,但为了最小的可重复示例而删除了它。目前findAll()正在返回一个空数组,而它应该从h2返回一个带有员工实体json的数组。我仍然不清楚Spring如何将数据处理到h2数据库中,所以我想这可能是我的问题的根源。 控制器: 存储库: 实体: 数据sql: schema.sql: