当前位置: 首页 > 知识库问答 >
问题:

使用ms sql server查询OneToOne映射的时间超过8秒

刘安志
2023-03-14

我正在使用MS SQL server和jpa存储库。

我想连接2个表并获取前20列,我在实体类中使用了注释。

@Getter
@Setter
@ToString
@Entity
@Table(name = "TVSource")
public class MyTelevisionSource {
    @Id
    private Long SourceId;

    @Column(columnDefinition = "nvarchar2 (2000)")
    private String LongName;

    @Column(columnDefinition = "nvarchar2 (2000)")
    private String DisplayName;

    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "SourceId")
    private RCMSource rcmSource;  

}


@Getter
@Setter
@ToString
@Entity
@Table(name = "Source")
public class RCMSource {

    @Id
    private Long SourceId;

    @Column(columnDefinition = "nvarchar2 (2000)")
    private String SourceName;

}


@Service
public class TelevisionSourceService {

    @Autowired
    private TelevisionSourceRepository televisionSourceRepo;

    public List<MyTelevisionSource> getTelevisionSource(){

        Pageable pageable = PageRequest.of(0, 10);
        Page<MyTelevisionSource> tvSource =  televisionSourceRepo.findAll(pageable);

        System.out.println(tvSource.getContent());

        return tvSource.getContent();
}


public interface TelevisionSourceRepository extends JpaRepository<MyTelevisionSource, Long> {

    Page<MyTelevisionSource> findAll(Pageable pageable);

}
Page<MyTelevisionSource> findAll(Pageable pageable);

原因:org.hibernate.hql.internal.ast.QuerySyntaxException:源未映射[SELECT s.sourceId,s.sourceName,t.TvSourceLongName FROM Source as s INNER JOIN TelevisionSource as t ON s.sourceId=t.sourceId]

不知道...为什么会给

共有1个答案

阳文轩
2023-03-14

您真的需要懒惰(OneToOne注释的fetchType.lazy)吗?因此,您有1个主要查询检索您的电视源,然后有10个查询检索RCMSources。如果设置FetchType.Eager,则它应该生成一个带有左联接的查询

 类似资料:
  • 问题内容: 我正在尝试使Hibernate @OneToOne注释正常工作,并且在这里没有太大的成功… 假设我有一个名为的表格,看起来像这样: 我有一个看起来像这样的实体: 还有一个类似的,另一个实体看起来像这样: 当我进行读取时,我希望它将返回带有的对象。相反,我得到一个AnnotationException:“引用的属性不是(One | Many)ToOne:mappedBy User.sta

  • 我在使用模型映射器使用执行父子实体更新时遇到了一个问题。 描述如下 父类: 儿童班: 通过这种安排,我能够成功地创建和查询站点地址组合。但是,我在进行更新时遇到了一个问题。我正在尝试使用modelmapper语句更新站点或地址,如下所示: 期望在传入站点中更改的所有字段(即来自请求的站点)应替换站点中的现有字段。但是,我从modelmapper中得到一个Stackoverflow错误。 我们是否有

  • 我有2个实体:Field和ViewOptions 省略与问题无关的字段和方法

  • 我一直试图通过一个名为Guardian的中间类映射两个用户之间的一些“OneToOne”关系。当我试图检索一个用户(和他的监护人)时,从Glassfish(Open edition V4.0)返回一个内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在JPA类中的映射。 启动服务器时,我得到两个与Guardian类有关的警告,但我并不真正理解: 警告:映射到元素[me

  • 问题内容: 假设我有个人 和工作 提取时,我无法将Person和Job映射到其他实体。 我在做什么错? 问题答案: 您的代码应为: (尝试从工作中删除重复的列’person_id’) 或其他共享主键的方法:

  • 在mapper中,我调用了一个proc'xyz',它返回所查询的ProcessType表的行列表的光标。