【发布时间】:2020-02-12 13:51:10
【问题描述】:
我使用 Oracle 数据库和一些 JPA 查询创建了一个非常小而简单的 Spring Boot 应用程序。
这是不返回数据的代码sn-p,实际存在于数据库中。
letterRecipientNonOas = letterRecipientNonOasRepository
.findById(Long.valueOf(letterRecipientDTO.getNonOas().getId()))
.orElseThrow(() -> new EntityNotFoundException(LetterRecipientNonOas.class,
Constant.MESSAGE_ENTITY_NOT_FOUND));
这里 findById 正在返回空结果集。
这是我的仓库
package com.care.document.repository;
import java.util.List;
import java.util.Optional;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import com.care.document.model.LetterRecipientNonOas;
/**
* The Interface LetterRecipientNonOasRepository.
*/
@Repository
public interface LetterRecipientNonOasRepository extends PagingAndSortingRepository<LetterRecipientNonOas, Long> {
Optional<LetterRecipientNonOas> findByLetterId(Long id);
Optional<LetterRecipientNonOas> findByTitleIgnoreCase(String title);
List<LetterRecipientNonOas> findByTitleContainingIgnoreCase(String title);
List<LetterRecipientNonOas> findAllByTitleIgnoreCaseAndIdNot(String title, Long recipientId);
List<LetterRecipientNonOas> findAllByIdAndLetterId(long id, long letterId);
}
这是我的模型类:
package com.care.document.model;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import org.springframework.lang.Nullable;
import com.care.admin.model.BaseEntity;
import com.care.admin.util.CommonUtil;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.FieldDefaults;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Entity
@Table(name = "letter_recipient_non_oas")
public class LetterRecipientNonOas extends BaseEntity implements Serializable {
@Id
Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "letter_id")
Letter letter;
Integer recipientType; // Action/Info
//byte recipientSubType; // Internal/External/NonOAS
byte recipientCategory; //Internal/External
int orderNo;
String title;
@Nullable
String remarks;
String address;
@PrePersist
private void prePersist() {
this.id = CommonUtil.generateID(this.atRegion);
}
}
我测试了,尝试了不同的方法,但没有用。
【问题讨论】:
-
如果它没有返回任何东西,说明它不存在,或者您没有使用您认为正在使用的数据库。
-
我验证了所有这些数据都在那里,即使我使用的数据库是正确的
-
我对此表示怀疑,否则它会返回一些东西。结果没有说谎。因此,您的应用程序要么正在查看与您正在查看的不同的数据库,要么您看到的数据未保存在数据库中(即未提交的事务)。尽管如此,结果并没有说谎。
标签: java hibernate spring-boot jpa spring-data-jpa