子表中的JPA外键为空

爆发

我在下面的课程中尝试使用JPA获得单人关系。当xml消息发送到restcontroller时,该消息同时存储在父表和子表中,但外键始终为null。请让我知道是否有任何问题。

我用来保存数据的Rest Service,下面是我要发布到此rest方法的示例xml。

@RequestMapping(value="/team/", method = RequestMethod.POST , headers="Accept=application/xml")
@ResponseStatus(value = HttpStatus.OK)
public void createTeam(@RequestBody Team team) throws Exception {
    teamService.createTeam(team);
}

儿童班

   @XmlRootElement
    @Entity
    public class Player {

        @Id
        @GeneratedValue
        @Column(name = "player_id")
        private long player_id;

        @Column(unique=true , nullable = false)
        private String name;

        @ManyToOne
        @JoinColumn(name = "team_id")
        private Team team;

and setter and getters....
}

和我的父母班

   @XmlRootElement
    @Entity(name ="team")
    public class Team {

        @Id
        @GeneratedValue
        @Column(name = "team_id")
        private long team_id;

        @Column(unique=true , nullable = false)
        private String name;

        @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "team")
        private List<Player> player;

and setter and getter
}

@Service
@Transactional
public class TeamServiceImpl implements TeamService{

protected EntityManager entityManager;

    public EntityManager getEntityManager() {
        return entityManager;
    }

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

    @Override
    public List<Team> getTeam() {
         Query query = getEntityManager().createQuery("select a from team a");
          List<Team> resultList = query.getResultList();
          return resultList;
    }

    @Override
    public void createTeam(Team team) {
        getEntityManager().persist(team);
    }

}



@Service
@Transactional
public class PlayerServiceImpl implements PlayerService {

    protected EntityManager entityManager;

    public EntityManager getEntityManager() {
        return entityManager;
    }

    @PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }


    @Override
    public List<Player> getPlayer() {
         Query query = getEntityManager().createQuery("select a from Player a");
          List<Player> resultList = query.getResultList();
          return resultList;
    }

    @Override
    public void createPlayer(Player player) {
        getEntityManager().persist(player);
    }

}

和我的xml

<team>
<name>CSK</name>
<Players>
<player>
    <name>kholi</name> 
</player>
<player>
    <name>king</name> 
</player>
<player>
    <name>raja</name> 
</player>
</Players>
</team>

以下是在团队中创建条目后我在表中看到的结果。请注意,玩家表中的team_id字段为null。这是我的问题。需要知道我如何解决它,以便此字段将获得team_id值。

mysql> select * from team;
+---------+-------+
| team_id | name  |
+---------+-------+
|       1 | Delhi |
+---------+-------+
1 row in set (0.00 sec)

mysql> select * from player;
+-----------+--------+---------+
| player_id | name   | team_id |
+-----------+--------+---------+
|         1 | kholi1 |    NULL |
|         2 | king   |    NULL |
|         3 | raja   |    NULL |
|         4 | kholi  |    NULL |
|         5 | a      |    NULL |
|         6 | b      |    NULL |
|         7 | c      |    NULL |
|         8 | d      |    NULL |
|         9 | e      |    NULL |
|        10 | f      |    NULL |
|        11 | g      |    NULL |
|        12 | h      |    NULL |
|        13 | i      |    NULL |
|        14 | j      |    NULL |
|        15 | k      |    NULL |
|        16 | l      |    NULL |
|        17 | m      |    NULL |
|        18 | n      |    NULL |
|        20 | sdsdsd |    NULL |
+-----------+--------+---------+
19 rows in set (0.00 sec)
asm0dey

看起来您已经保存了球员,但没有为他们设置球队。您应该执行以下操作:

for (Player player: team.getPlayers())
    player.setTeam(team);

以另一种方式,仅设置播放器的一个属性-名称。JPA无法自动检测出该球员是否在球员收藏中,而不是在球队中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JPA中的级联设置和休眠中的外键冲突

来自分类Dev

yii空外键

来自分类Dev

休眠多对一将外键更新为空

来自分类Dev

在Rails中添加可为空的外键

来自分类Dev

使外键(字符串字段)为空

来自分类Dev

外键约束在空表中失败

来自分类Dev

当外键为空时,在具有Lambda表达式的List <T>中按Order By

来自分类Dev

子表中的JPA外键为空

来自分类Dev

外键始终保持为空

来自分类Dev

子表中的外键约束允许插入父表中不存在的值

来自分类Dev

如何在MySQL的子表的外键列中插入主表的主键值?

来自分类Dev

外键的子表不更新在多对一映射在春季启动JPA

来自分类Dev

保存Hibernate JPA实体后,外键为空

来自分类Dev

保存后,Rails外键始终为空

来自分类Dev

休眠多对一将外键更新为空

来自分类Dev

MySQL不会在子表中返回带有NULL外键的行

来自分类Dev

扭矩4中的外键为空

来自分类Dev

mongodb includesTo外键为空

来自分类Dev

带外键的实体框架选择为空?

来自分类Dev

外键始终保持为空

来自分类Dev

子表中的外键约束允许插入父表中不存在的值

来自分类Dev

将外键更新为空值

来自分类Dev

JPA 休眠外键未在实体中设置

来自分类Dev

坚持使用 JPA 会使嵌套对象的 db 外键字段为空

来自分类Dev

即使外键在 HQL 中为空也返回数据

来自分类Dev

当外键为空时,无法使用 Spring Data JPA 存储库检索记录

来自分类Dev

由于外键为空值,无法从表中获取数据

来自分类Dev

在子表中插入外键,每次都显示为空

来自分类Dev

JPA:外键作为 NamedQuery 中的参数