程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Spring Data JPA中联接两个表实体大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在Spring Data JPA中联接两个表实体?

开发过程中遇到在Spring Data JPA中联接两个表实体的问题如何解决?下面主要结合日常开发的经验,给出你关于在Spring Data JPA中联接两个表实体的解决方法建议,希望对你解决在Spring Data JPA中联接两个表实体有所启发或帮助;

有关员工拥有一个或多个电话的典型示例,请参阅此Wikibook部分。

对于你的特定示例,如果你想建立one-to-one关系,则应更改ReleaseDateType模型中的下一个代码:

@column(nullable = truE) 
private Integer media_ID;

对于:

@OnetoOne(fetch = FetchType.LAZY)
@Joincolumn(name="CACHE_MEDIA_ID", nullable=truE)
private CacheMedia cacheMedia ;

在CacheMedia模型中,你需要添加:

@OnetoOne(cascade=ALL, mappedBy="ReleaseDateType")
private ReleaseDateType releaseDateType;

然后应在你的存储库中替换:

@query("select * from a a  left join B b on a.ID=b.ID")
public List<ReleaseDateType> FindAllWithDescriptionquery();

通过:

//In this case a query Annotation is not need since spring constructs the query from the method name
public List<ReleaseDateType> findByCacheMedia_ID(Integer ID); 

或通过:

@query("FROM ReleaseDateType AS rdt WHERE cm.rdt.cacheMedia.ID = ?1")    //This is using a named query method
public List<ReleaseDateType> FindAllWithDescriptionquery(Integer ID);

或者,如果你喜欢使用@OnetoManyand @manyToOne关系,则应在ReleaseDateType模型中更改下一个代码:

@column(nullable = truE) 
private Integer media_ID;

对于:

@OnetoMany(cascade=ALL, mappedBy="ReleaseDateType")
private List<CacheMedia> cacheMedias ;

在CacheMedia模型中,你需要添加:

@manyToOne(fetch = FetchType.LAZY)
@Joincolumn(name="RELEASE_DATE_TYPE_ID", nullable=truE)
private ReleaseDateType releaseDateType;

然后应在你的存储库中替换:

@query("select * from a a  left join B b on a.ID=b.ID")
public List<ReleaseDateType> FindAllWithDescriptionquery();

通过:

//In this case a query Annotation is not need since spring constructs the query from the method name
public List<ReleaseDateType> findByCacheMedias_ID(Integer ID); 

或通过:

@query("FROM ReleaseDateType AS rdt left JOIN rdt.cacheMedias AS cm WHERE cm.ID = ?1")    //This is using a named query method
public List<ReleaseDateType> FindAllWithDescriptionquery(Integer ID);

解决方法

我想写一个查询SELECT * FROM Release_date_type a LEFT JOIN cache_media b on a.id=b.id。我是Spring Data JPA的新手。我不知道如何为Join查询编写实体。这是一个尝试:

@Entity
@Table(name = "Release_date_type")
public class ReleaseDateType {

    @Id
    @GeneratedValue(strategy=GenerationType.TABLE)
    private Integer release_date_type_id;
    // ...
    @column(nullable = truE) 
    private Integer media_Id;
    // with getters and setters...
}

另一个实体是:

@Entity
@Table(name = "Cache_Media")
public class CacheMedia {

    @Id
    @GeneratedValue(strategy=GenerationType.TABLE)
    private Integer id;
    // ...
    private Date loadDate; //with the getter and setter ..
}

我想写一个crudRepository诸如

public interface ReleaseDateTypeRepository extends CrudRepository<ReleaseDateType,Long>{
    @Query("SELECT * FROM Release_date_type a LEFT JOIN cache_media b on a.id=b.id")
    public List<ReleaseDateType> FindAllWithDescriptionQuery();
}

大佬总结

以上是大佬教程为你收集整理的在Spring Data JPA中联接两个表实体全部内容,希望文章能够帮你解决在Spring Data JPA中联接两个表实体所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。