5

クエリにspring-dataとjpaリポジトリを使用しています。ManyToOneフィールドを持つエンティティがあり、クエリでこのフィールドで並べ替えると、このフィールドにNullが含まれる値がリストに返されないという問題があります。これは適切な動作ではないようです。

私のエンティティは次のようになります。

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

}

次に、ManyToOneユーザーエンティティ

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

あなたがアイデアを得ることができるように、私は多くのコードを単純化しました。すべてのクエリは正常に機能しています。Pag​​eableオブジェクトの[並べ替え]をowner_user_id列で並べ替えるように設定すると、問題が発生します。アイテムテーブルのいずれかのエントリのowner_user_idがnullの場合、それらはリストに返されません。

これを回避するために追加できる注釈の種類はありますか?または私ができる他の何か?私は本当にリポジトリを使い続けたいのですが、これを回避できなければそうは思わないでしょう。私は休止状態とMYSQLを使用していますが、それが問題の一部であるかどうかはわかりません。

ありがとう。

4

1 に答える 1

6

これは、1.2.1バージョンで解決されたSpring Data /JPASpecの既知の問題でした。https://jira.springsource.org/browse/DATAJPA-252およびhttps://jira.spring.io/browse/DATAJPA-277を参照してください。

于 2012-08-28T13:39:45.223 に答える