我必须实体对象,并且它们之间存在一对一的映射
@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 );
任何人都可以帮助我跟踪问题。
答案 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);