内部联接在一对一映射spring数据jpa中不起作用

内部联接在一对一映射spring数据jpa中不起作用,jpa,spring-data-jpa,Jpa,Spring Data Jpa,我必须创建实体对象,它们之间有一对一的映射 @Data @Entity(name= "mv_garage_asset_mapping") public class GarageAssetMapping implements Serializable { /** * */ private static final long serialVersionUID = 2535545189473989744L; @Id @Column(name="

我必须创建实体对象,它们之间有一对一的映射

@Data
@Entity(name= "mv_garage_asset_mapping")
public class GarageAssetMapping implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 2535545189473989744L;

    @Id
    @Column(name="GARAGE_CODE")
    private String garageCode;

    @Column(name="CONTRACT_NUMBER")
    private String contractNumber;

    @OneToOne( fetch=FetchType.LAZY )
    @JoinColumn(name="CONTRACT_NUMBER", referencedColumnName = "hpano", insertable = false, updatable = false)
    @NotFound(action = NotFoundAction.IGNORE)
    private RepoAgentDetails repoAgentDetails;
}
另一个实体是

@Entity 
public class RepoAgentDetails {
   @Column(name="hpano")
   private String hpano;
@OneToOne(mappedBy = "repoAgentDetails",   fetch = FetchType.LAZY)  
    private GarageAssetMapping garageAssetMapping;
}
有一对一映射,iam使用内部联接从表中获取数据 当我运行内部连接时,spring数据jpa不会给出任何结果,尽管查询被触发,并且代码中没有异常

然而,当我使用sqldeveloper工具在数据库上运行查询时,查询会给出结果,但当代码中的同一个查询没有给出任何结果时

查询如下

@Query("select new com.mf.acrs.garage.bean.AssetDetailsBean (ga.contractNumber as contractNumber, ra.create_date as createDate ) "
            + "from mv_garage_asset_mapping ga "
            + " inner join RepoAgentDetails ra on ga.contractNumber = ra.hpano"
            + " where ga.garageCode = ?1 ")     


    List<AssetDetailsBean> findByGarageCode ( String garageCode );  
@Query(“选择new com.mf.acrs.garage.bean.AssetDetailsBean(ga.contractNumber作为contractNumber,ra.create\u date作为createDate)”
+“来自mv_garage_asset_mapping ga”
+“ga.contractNumber=ra.hpano上的内部联接报告代理详细信息ra”
+“其中ga.garageCode=?1”)
列出findByGarageCode(字符串garageCode);

有人能帮我跟踪问题吗?

查询应该是这样的(因为您没有提供实体的所有属性,这只是猜测)

@Query(“选择新建com.mf.acrs.garage.bean.AssetDetailsBean(ga.contractNumber,ga.repoAgentDetails.create_date)”
+“来自GarageAssetMapping ga,其中ga.garageCode=?1”)
列出findByGarageCode(字符串garageCode);

查询应该是这样的(因为您没有提供实体的所有属性,这只是猜测)

@Query(“选择新建com.mf.acrs.garage.bean.AssetDetailsBean(ga.contractNumber,ga.repoAgentDetails.create_date)”
+“来自GarageAssetMapping ga,其中ga.garageCode=?1”)
列出findByGarageCode(字符串garageCode);

您的查询看起来像SQL,但与JPQL混合。您不能将NEW与sql一起使用。您可以以JPQL的形式修改查询或给我一个链接吗?但是,当我使用同一个查询将join应用于其他表时,它会给出结果,但与此表的join不会获取任何结果,尽管存在数据..这就是为什么我感到困惑的原因您的查询看起来像SQL,但与JPQL混合。您不能将NEW与sql一起使用。您可以以JPQL的形式修改查询或给我一个链接吗?但是,当我使用同一个查询将join应用于其他表时,它会给出结果,但与此表的join不会获取任何结果,尽管存在数据..这就是我感到困惑的原因
@Query("select new com.mf.acrs.garage.bean.AssetDetailsBean (ga.contractNumber, ga.repoAgentDetails.create_date) "
            + "from GarageAssetMapping ga where ga.garageCode = ?1")     
List<AssetDetailsBean> findByGarageCode (String garageCode);