Spring数据JPA存储库findAll()方法返回空列表
我使用的是Spring数据JPA:Spring数据JPA存储库findAll()方法返回空列表,spring,hibernate,spring-data,Spring,Hibernate,Spring Data,我使用的是Spring数据JPA: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.7.1.RELEASE</version> </dependency> org.springframework.data
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.7.1.RELEASE</version>
</dependency>
org.springframework.data
spring数据jpa
1.7.1.1发布
使用Spring 4.3.7.RELEASE和Hibernate 5.2.9.Final
当我使用findAll进行查询时,列表返回的值包含空值
实体:
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Entity
public class Etudiant implements Serializable {
/**
* Serial version UID
*/
private static final long serialVersionUID = -1982480763983112005L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idEtudiant")
private Integer idEtudiant;
@Column(name = "nomEtudiant")
private String nomEtudiant;
@Column(name = "prenomEtudiant")
private String prenomEtudiant;
@Column(name = "adresse")
private String adresse;
@Column(name = "dateNaissance")
private Date dateNaissance;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "etudiant_cours", joinColumns = @JoinColumn(name = "idEtudiant", referencedColumnName = "idEtudiant"), inverseJoinColumns =
@JoinColumn(name = "idCours", referencedColumnName = "idCours"))
private List<Cours> cours;
}
@Getter
@塞特
@诺尔格构装师
@AllArgsConstructor
@EqualsAndHashCode
@实体
公共类Etudiant实现可序列化{
/**
*串行版本
*/
私有静态最终长serialVersionUID=-1982480763983112005L;
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“idEtudiant”)
私有整数idEtudiant;
@列(name=“nomEtudiant”)
私有字符串命名;
@列(name=“prenomEtudiant”)
私家侦探;
@列(name=“adrese”)
私人字符串地址;
@列(name=“dateNaissance”)
私人日期出生;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name=“etudiant\u cours”,joinColumns=@JoinColumn(name=“idEtudiant”,referencedColumnName=“idEtudiant”),inverseJoinColumns=
@JoinColumn(name=“idCours”,referencedColumnName=“idCours”))
私人列表课程;
}
注意:问题不是来自lombock,我已经用getter和setter进行了测试
存储库:
@Repository
public interface EtudiantRepository extends JpaRepository<Etudiant, Integer> {
}
@存储库
公共接口etudianrepository扩展了JpaRepository{
}
服务:
@Service
public class EtudiantServiceImpl {
@Autowired
EtudiantRepository etudiantRepository;
List<Etudiant> lst = new ArrayList<Etudiant>();
public List<Etudiant> getAllEtudiant() {
lst = this.etudiantRepository.findAll();
return lst;
}
}
@服务
公共类EtudiantServiceImpl{
@自动连线
等等,等等,等等,等等;
List lst=new ArrayList();
公共列表getAllEtudiant(){
lst=this.etudianrepository.findAll();
返回lst;
}
}
在调试屏幕截图中,可以看到etudianrepository为空。 可能您的配置中缺少@EnableJpaRepositories注释
EtudiantServiceImpl正在使用依赖项注入或使用新关键字?实例化。您需要使用
上下文:组件扫描注释到xml配置中,以便扫描基本包和存储库包,您可以在下面找到代码:
<jpa:repositories base-package="com.demo.test.repository" />
<context:component-scan annotation-config="true"
base-package="com.demo.test" />
若findall()。
同时检查您的数据源和实体管理器连接最后我找到了解决方案:
将spring版本从4.3.7.RELEASE更改为4.3.10.RELEASE您的@Entity
类是什么?(Etudiant)是的,实体是Etudiant你的问题中有遗漏或错误的地方,但我不知道是什么?!?列表是空的还是包含空值?您需要存储库中的成员lst做什么?为什么不向我们展示实体Etundiant的源代码?如何启动调试会话以及何时拍摄快照?问题已更新。问题的标题具有误导性,因为它提到存储库返回null
,而存储库实例本身为null
。我已将此配置添加到applicationContext.xml,它还从实体类创建数据库表。在Controllera中使用依赖项注入实例化您是在容器中调试还是使用junit之类的工具?