当前位置: 首页 > 知识库问答 >
问题:

Spring jpa@onetomany单向始终为空

金坚
2023-03-14
@Data
@Entity
@Table(name = "member")
public class MemberEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @OneToMany
    @JoinColumn(name = "memberId")
    private List<PhoneEntity> phoneEntities;
}


@Data
@Entity
@Table(name = "phone")
public class PhoneEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column
    private Integer memberId;
}


@Repository
public interface MemberRepository extends JpaRepository<MemberEntity, Integer> {

    @Query("select m from MemberEntity m join fetch m.phoneEntities where m.id=?1")
    MemberEntity findByIdWithPhone(Integer id);
}

创建从成员电话的OneToMany关系

SELECT 
memberenti0_.id as id1_0_0_,
phoneentit1_.id as id1_1_1_,
phoneentit1_.member_id as member_i2_1_1_,
phoneentit1_.member_id as member_i2_1_0__,
phoneentit1_.id as id1_1_0__ 
from member memberenti0_
inner join phone phoneentit1_ on memberenti0_.id=phoneentit1_.member_id
where memberenti0_.id=?

共有1个答案

范振海
2023-03-14

您必须将映射更正为:

@Data
@Entity
@Table(name = "member")
public class MemberEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @OneToMany(
        mappedBy = "member"
    )        
    private List<PhoneEntity> phoneEntities;
}


@Data
@Entity
@Table(name = "phone")
public class PhoneEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne(fetch = FetchType.LAZY) // Or Eager 
    @JoinColumn(name = "member_id")
    private MemberEntity member;
}

并且不需要在查询中指定join:

@Query("select m from MemberEntity m where m.id=?1")
 类似资料:
  • 我正在使用FCM进行消息推送,我正在将数据从通知发送到我正在打开的活动。 建筑通知规范: 在我的活动中,我得到了如下意图: 但问题是,每次Intent Extras在活动中为空时,我都检查了我在社区中找到的所有可能的原因,但每次响应都是相同的。 我试过下面提到的链接 Intent的额外值始终为空 Android通知PendingIntent Extras null 总是从通知意图android获取

  • 我对冬眠学习还不熟悉,所以研究冬眠学习中使用的关系。我所了解的是-对于带有外键的一域单向关系映射,连接列将位于目标实体中(在我的示例中为Review类)。我不需要让它双向运行。 但是在实现它的同时,我得到了以下错误: OneToMany-单向-示例3 请帮帮忙!!!

  • 问题内容: 为什么hibernate对这些类使用联接表? 我既不需要联接表也不需要双向关联:( 问题答案: 因为这是它的设计方式,也是JPA规范要求它映射这样的关联的方式。如果要在广告投放表中添加联接列,请使用 这是有据可查的。

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!

  • 我有两个不同的活动,在第一个活动中,我在一些EditText中输入一些信息,然后进入第二个活动,但当我返回时,第一个活动中EditText上的文本消失了。 以下是第一个活动的OnCreate() 我正在使用onSaveInstanceState方法保存信息 在进行调试时,我可以看到确实在onSaveInstanceState方法中填充了savedInstanceState捆绑包,但在OnCreat

  • 我将Spring Boot版本='1.4.0.rc1'与Spring Boot Stormpath 1.0.2一起使用。 我试图使用多部分文件上传,但MultipartFile在控制器中总是为空。 这是控制器,在下面的代码中,总是成功,总是失败: 我的集成测试使用改型: 我使用自动配置,所以我唯一的自定义配置类配置StormPath: 更新:这是传出请求。我不确定如何在多部分解析器本身中启用日志记