Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot JPA使用findById不返回现有结果_Java_Hibernate_Spring Boot_Jpa_Spring Data Jpa - Fatal编程技术网

Java Spring boot JPA使用findById不返回现有结果

Java Spring boot JPA使用findById不返回现有结果,java,hibernate,spring-boot,jpa,spring-data-jpa,Java,Hibernate,Spring Boot,Jpa,Spring Data Jpa,我使用Oracle数据库和一些JPA查询创建了一个非常小和简单的Spring Boot应用程序 这是不返回数据的代码段,数据实际上存在于数据库中 letterRecipientNonOas = letterRecipientNonOasRepository .findById(Long.valueOf(letterRecipientDTO.getNonOas().getId())) .

我使用Oracle数据库和一些JPA查询创建了一个非常小和简单的Spring Boot应用程序

这是不返回数据的代码段,数据实际上存在于数据库中

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

}

我试过,试过不同的方法,但没有用

有两种情况可以让人产生这种印象:

  • 您正在查看错误的数据库
  • 当您尝试加载数据时,数据还不在那里,但当您检查数据时,数据就在那里。 众所周知,JPAs缓存可以相当有效地创建这样的场景
  • 数据看起来和你想象的有点不同。这可能是由不可见或容易丢失的内容(如空格或控制字符)引起的
  • 您可以在创建数据的事务中检查数据库,或者使用允许脏读的会话检查数据库,并且创建数据的插入尚未提交

  • 如果它没有返回任何东西,它就不在那里,或者你没有使用你认为你正在使用的数据库。我验证了所有这些数据,甚至我正在使用的数据库都在那里。我怀疑它是否正确,否则它将返回一些东西。结果不是撒谎。因此,您的应用程序或者正在查看另一个数据库,或者您看到的数据没有保存在数据库中(即未提交的事务)。尽管如此,结果并不是撒谎。
    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);
        }
    }