Вопрос по hibernate, spring-data-jpa, jpa – Упорядочить репозиторий Spring-data JPA, потеряв в результатах пустые значения

4

Я использую 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);
}

Я упростил большую часть кода, чтобы вы могли получить представление. Все запросы работают отлично, проблема возникает, когда я устанавливаю сортировку в моем объекте Pageable для сортировки по столбцу owner_user_id. Если какая-либо из записей в таблице элементов имеет значение null для owner_user_id, они не возвращаются в списке.

Есть ли какая-то аннотация, которую я могу добавить, чтобы обойти это? Или что-то еще, что я могу сделать? Я действительно хочу продолжать использовать репозиторий, но не думаю, что буду, если не смогу обойти это. Я использую hibernate и MYSQL, но не уверен, что это часть проблемы.

Благодарю.

Чтобы обойти эту проблему, я создал представление, которое касается левых соединений, и построил JpaRepository из этого. devo

Ваш Ответ

1   ответ
3

Это была известная проблема в Spring Data / JPA Spec, которая была решена в версии 1.2.1. Увидетьhttps://jira.springsource.org/browse/DATAJPA-252 а такжеhttps://jira.spring.io/browse/DATAJPA-277.

Похожие вопросы