Java 表的w值。@解吸器——成本并不总是相同的。对于更简单、原始类型的数据类型来说,这可能不是什么大不了的事情,但我之所以出现在这个页面上,是因为我注意到一个简单的“列表文档”查询运行得很慢。该实体有一个BLOB列(文件上载/存储时需要它)&我怀疑它速度慢,因为

Java 表的w值。@解吸器——成本并不总是相同的。对于更简单、原始类型的数据类型来说,这可能不是什么大不了的事情,但我之所以出现在这个页面上,是因为我注意到一个简单的“列表文档”查询运行得很慢。该实体有一个BLOB列(文件上载/存储时需要它)&我怀疑它速度慢,因为,java,jpa,spring-data-jpa,Java,Jpa,Spring Data Jpa,表的w值。@解吸器——成本并不总是相同的。对于更简单、原始类型的数据类型来说,这可能不是什么大不了的事情,但我之所以出现在这个页面上,是因为我注意到一个简单的“列表文档”查询运行得很慢。该实体有一个BLOB列(文件上载/存储时需要它)&我怀疑它速度慢,因为它正在将BLOB加载到内存中,即使这些BLOB不是列出文档所必需的。@jm0据您所知,有多少表有BLOB列?@decoder它只是一个表,但我正在执行“列表”功能(多行--列出由给定id创建的所有文档)。我注意到这个问题的唯一原因是,这个简单的



表的w值。@解吸器——成本并不总是相同的。对于更简单、原始类型的数据类型来说,这可能不是什么大不了的事情,但我之所以出现在这个页面上,是因为我注意到一个简单的“列表文档”查询运行得很慢。该实体有一个BLOB列(文件上载/存储时需要它)&我怀疑它速度慢,因为它正在将BLOB加载到内存中,即使这些BLOB不是列出文档所必需的。@jm0据您所知,有多少表有BLOB列?@decoder它只是一个表,但我正在执行“列表”功能(多行--列出由给定id创建的所有文档)。我注意到这个问题的唯一原因是,这个简单的列表查询需要几秒钟的时间,而其他表上更复杂的查询几乎是立即发生的。一旦我意识到,我知道随着行的增加,它会受到越来越多的影响,因为Spring JPA正在将每个BLOB加载到内存中,即使它们没有被使用。我发现了一个不错的解决方案Spring数据的解决方案(发布在下面),但我认为我有一个更好的解决方案,那就是纯JPA注释,如果它有效的话,我会发布tmrw(顺便说一句,我验证过,如果导入了“Document”,您不需要提供完全限定的类名——就是这样做的,因为在我能够找到的唯一示例中就是这样做的)这应该是可以接受的答案。它工作得很好,并且只选择必要的字段。不必要的字段也包括在内,但是如果值为“null”,这些字段会占用内存吗?是的,但是非常小,以至于在绝大多数情况下,试图围绕这一点进行设计是非常荒谬的——您必须使用专门的l没有这些字段的轻量级对象&让它们指向同一个表?当使用ORM并利用它们建立关系时,哪个IMO是不受欢迎的…超级优化可能更多地是在使用一些轻量级查询DSL并直接映射到DTO的领域,即使如此,我认为冗余是不鼓励的DJM0它对我不起作用虽然导入了完全限定的类名,但它确实编译成功。不需要本机查询。您应该避免使用它们,因为它们破坏了JPQL的优势。请参阅Atlas答案。对于我来说,我必须用
属性名限定第一个属性(上面的
FIND\u PROJECTS
)(因此,如果这是我的代码,我必须将其写成
@Query(value=FIND\u PROJECTS,nativeQuery=true)
,等等。你应该用mpr描述的自定义接口替换
对象
。这是一个干净的解决方案。它可能有boiler模板,但接口可以是实体的内部类。非常干净。太棒了,记住不要在实体上实现接口,否则这个解决方案行不通扩展JpaRepository时,esn不起作用,任何人都知道解决方法?不能使用findAll();因为它会与JpaRepository的方法冲突。您需要使用类似List findAllBy()的方法;您还需要将查询中未映射到投影字段名称的任何列作为
as
,例如,如果表列为
event\u type
,而投影字段为
eventType
,则查询应为
select event\u type as eventType…
Hi sachin,我怀疑是否会创建如下实体您在上面提到过。当JPA运行时,它将尝试使用用户名创建表。将使用哪个实体。永远不要使用JPA创建表,在数据库中手动创建表,使用JPA将关系世界映射到对象世界。为什么不能在这里使用继承?您将继承您试图排除的列。@deadBug为什么不重新执行rn列表而不是集合?!@AbdullahKhan,因为结果可能并不总是有顺序。
TypedQuery <Object[]> query = em.createQuery(
  "SELECT p.projectId, p.projectName FROM projects AS p", Object[].class);

List<Object[]> results = query.getResultList();
Query query = em.createNativeQuery("sql statement");
List<Object[]> results = query.getResultList();
public static final String FIND_PROJECTS = "SELECT projectId, projectName FROM projects";

@Query(value = FIND_PROJECTS, nativeQuery = true)
public List<Object[]> findProjects();
public List<Project> findAll()
JPAQuery query = new JPAQuery(entityManager);
List<Tuple> result = query.from(projects).list(project.projectId, project.projectName);
for (Tuple row : result) {
 System.out.println("project ID " + row.get(project.projectId));
 System.out.println("project Name " + row.get(project.projectName)); 
}}
JPAQuery query = new JPAQuery(entityManager);
QProject project = QProject.project;
List<ProjectDTO> dtos = query.from(project).list(new QProjectDTO(project.projectId, project.projectName));
class ProjectDTO {

 private long id;
 private String name;
 @QueryProjection
 public ProjectDTO(long projectId, String projectName){
   this.id = projectId;
   this.name = projectName;
 }
 public String getProjectId(){ ... }
 public String getProjectName(){....}
}
@Query("select new com.foo.bar.entity.Document(d.docId, d.filename) from Document d where d.filterCol = ?1")
List<Document> findDocumentsForListing(String filterValue);
public interface SchoolRepository extends JpaRepository<School,Integer> {
    @Query("select s.id, s.name from School s")
    List<Object> getSchoolIdAndName();
}
@Autowired
private SchoolRepository schoolRepository;

@ResponseBody
@RequestMapping("getschoolidandname.do")
public List<Object> getSchool() {
    List<Object> schools = schoolRepository.getSchoolIdAndName();
    return schools;
}
interface ProjectIdAndName{
    String getId();
    String getName();
}
List<ProjectIdAndName> findAll();
@Entity
@Table(name = "user")
Class User{
         @Column(name = "id", unique=true, nullable=false)
         int id;
         @Column(name = "name", nullable=false)
         String name;
         @Column(name = "address", nullable=false)
         Address address;
}
@Entity
@Table(name = "user")
Class UserLite{
         @Column(name = "id", unique=true, nullable=false)
         int id;
         @Column(name = "name", nullable=false)
         String name;
}
@Override
    @Transactional
    public List<Employee> getAllEmployee() throws Exception {
    LOGGER.info("Inside getAllEmployee");
    List<Employee> empList = empRepo.getNameAndCityOnly();
    return empList;
    }
public interface EmployeeRepository extends CrudRepository<Employee,Integer> {
    @Query("select e.name, e.city from Employee e" )
    List<Employee> getNameAndCityOnly();
}
@Query(value = "select p.id, p.uid, p.title, null as documentation, p.ptype " +
            " from projects p " +
            "where p.uid = (:uid)" +
            "  and p.ptype = 'P'", nativeQuery = true)
Project findInfoByUid(@Param("uid") String uid);
@Query(value="select p from #{#entityName} p where p.id=:projectId and p.projectName=:projectName")

List<Project> findAll(@Param("projectId") int projectId, @Param("projectName") String projectName);
Query query = entityManager.createNativeQuery("SELECT projectId, projectName FROM projects");
List result = query.getResultList();
public interface ProjectMini {
    String getProjectId();
    String getProjectName();
}

public interface ProjectRepository extends JpaRepository<Project, String> { 
    @Query("SELECT p FROM Project p")
    List<ProjectMini> findAllProjectsMini();
}
public interface ProjectRepository extends JpaRepository<Project, String> { 
    @Query(value = "SELECT projectId, projectName FROM project", nativeQuery = true)
    List<ProjectMini> findAllProjectsMini();
}
interface PersonRepository extends Repository<Person, UUID> {

    <T> Collection<T> findByLastname(String lastname, Class<T> type);
}
void someMethod(PersonRepository people) {

  Collection<Person> aggregates =
    people.findByLastname("Matthews", Person.class);

  Collection<NamesOnly> aggregates =
    people.findByLastname("Matthews", NamesOnly.class);
}
public static final String FIND_PROJECTS = "select ac_year_id,ac_year from tbl_au_academic_year where ac_year_id=?1";

    @Query(value = FIND_PROJECTS, nativeQuery = true)
    public  List<Object[]> findByAcYearId(Integer ac_year_id);