2012-06-15 34 views
4

我正在爲我的查詢使用spring-data和jpa存儲庫。我有一個問題,我有一個具有ManyToOne字段的實體,如果我通過查詢中的此字段進行排序,那麼在我的列表中不會返回任何具有該字段空值的值。這看起來不像是正確的行爲。Spring數據JPA存儲庫通過在結果中丟失空值來排序

下面列舉一下我的實體樣子:

@Entity 
public class Item { 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@NotNull 
@Column(name = "id") 
private Integer id; 


@Size(max = 255) 
@Column(name = "name") 
private String name; 

@JoinColumn(name = "owner_user_id", referencedColumnName = "id") 
@ManyToOne(fetch = FetchType.LAZY) 
private User ownerUserId; 

} 

然後多對一用戶實體

@Entity 
public class User { 

@Size(max = 100) 
@Column(name = "email") 
private String email; 
@Size(max = 256) 
@Column(name = "first_name") 
private String firstName; 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@NotNull 
@Column(name = "id") 
private Integer id; 

@OneToMany(cascade = CascadeType.ALL, mappedBy = "ownerUserId", fetch = FetchType.LAZY) 
private Collection<Item> itemCollection; 


} 

我有我的JPA存儲庫,像這樣:

@Transactional 
public interface ItemRepository extends JpaRepository<Item, Integer> { 

@Query("FROM Item i where name = ?1"); 
Page<Item> findItemWithName(String name, Pageable pageable); 
} 

我已經簡化一個很多的代碼,所以你可以得到一個想法。所有的查詢都工作得很好,當我在我的Pageable對象中設置排序以在owner_user_id列上進行排序時出現問題。如果項目表中的任何條目對於owner_user_id具有空值,則它們不會返回到列表中。

是否有某種註解可以添加來解決這個問題?或者我可以做的其他事情?我真的想繼續使用存儲庫,但不認爲我會如果我不能解決這個問題。我正在使用hibernate和MYSQL,不知道這是否是問題的一部分。

謝謝。

+0

爲了解決這個問題,我創建了一個處理左連接的視圖,並構建了JpaRepository。 – devo

回答

相關問題