内部联接无法在一对一映射弹簧数据jpa中工作

时间:2019-06-19 10:05:36

标签: 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="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 );  

任何人都可以帮助我跟踪问题。

1 个答案:

答案 0 :(得分:0)

查询应该看起来像这样(因为您没有提供所有来自实体的属性,这都是猜测)

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