内部联接在一对一映射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);