2017-08-08 185 views
1

我使用Spring數據JPA:春數據倉庫JPA的findAll()方法返回null名單

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-jpa</artifactId> 
    <version>1.7.1.RELEASE</version> 
</dependency> 

與Spring 4.3.7.RELEASE和Hibernate 5.2.9.Final。

當我使用findAll進行查詢時,List返回包含空值。

實體:

@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; 
} 

注:請注意,這個問題是不是來自lombock,我曾與getter和setter方法進行測試。

庫:

@Repository 
public interface EtudiantRepository extends JpaRepository<Etudiant, Integer> {  
} 

服務:

@Service 
public class EtudiantServiceImpl { 

    @Autowired 
    EtudiantRepository etudiantRepository; 

    List<Etudiant> lst = new ArrayList<Etudiant>(); 

    public List<Etudiant> getAllEtudiant() { 
     lst = this.etudiantRepository.findAll(); 
     return lst; 
    } 
} 

Debug result

+0

你是什麼'@ Entity'類? (Etudiant) – Brian

+0

是的,實體是Etudiant – Spoonatte

+0

你的問題有一些缺失或錯誤,但我不知道它是什麼?!?列表是否爲空或它是否包含空值?做什麼您需要存儲庫中的成員lst?爲什麼不給我們展示您的Entity Etundiant的源代碼?您如何開始調試會話,以及您何時拍攝快照? –

回答

1

在調試截圖,可以看出,etudiantRepository爲空。 也許您在配置中缺少@EnableJpaRepositories註釋。

EtudiantServiceImpl正在使用依賴注入或new關鍵字實例化?

+0

在控制器中使用依賴注入進行實例化 – Spoonatte

+0

您是在容器中調試還是使用類似junit的東西進行調試? – lzagkaretos

0

需要使用context:component-scan註釋到用於掃描基礎包和存儲庫包xml配置,可以找到以下碼:

<jpa:repositories base-package="com.demo.test.repository" /> 
<context:component-scan annotation-config="true" 
     base-package="com.demo.test" /> 

並且如果findall()這意味着表劑量不具有數據返回空值,它是正常行爲。 並檢查您的數據源和實體管理器連接

+0

我已經將此配置添加到applicationContext.xml,它也從Entity類創建數據庫表。 – Spoonatte

0

最後我找到了解決辦法:從4.3.7.RELEASE

變化春季版4.3.10.RELEASE

相關問題