Hibernate не вставляет запись в базу данных - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь добавить запись в базу данных. В отладке я проверяю, чтобы создать объект, и объект создан хорошо. Когда я использую getCurrentSession (). Save (entity); , это не добавляет запись в базу данных, но сессия открыта. У меня есть составной внешний ключ, для создания этого ключа я создаю дополнительный класс.

Класс:

package nba_statistics.entities;

import org.hibernate.annotations.Cascade;

import javax.persistence.*;

@Entity(name = "PlayerMatchPositions")
@Table(name = "player_match_positions")
public class PlayerMatchPositions {

    public void setId(PlayerMatchPositionsId id) {
        this.id = id;
    }

    @EmbeddedId
    private PlayerMatchPositionsId id;

    @ManyToOne
    @MapsId("player_id")
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @JoinColumn(name = "player_id")
    private Players player;

    @ManyToOne
    @MapsId("match_id")
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @JoinColumn(name = "match_id")
    private Matches match;

    @ManyToOne
    @MapsId("position_id")
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    @JoinColumn(name = "position_id")
    private Positions position;

    public PlayerMatchPositions(){};

    public PlayerMatchPositions(Players player, Matches match, Positions position) {
        id = new PlayerMatchPositionsId();
        this.player = player;
        this.match = match;
        this.position = position;
    }

    public Players getPlayer() {
        return player;
    }

    public void setPlayer(Players player) {
        this.player = player;
    }

    public Matches getMatch() {
        return match;
    }

    public void setMatch(Matches match) {
        this.match = match;
    }

    public Positions getPosition() {
        return position;
    }

    public void setPosition(Positions position) {
        this.position = position;
    }

    @Override
    public String toString() {
        return "PlayerMatchPositions{" +
                "id=" + id +
                ", player=" + player +
                ", match=" + match +
                ", position=" + position +
                '}';
    }
}

Дополнительный класс для внешнего ключа:

package nba_statistics.entities;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
import java.util.Objects;

@Embeddable
public
class PlayerMatchPositionsId implements Serializable {

    @Column(name = "player_id")
    int playerId;

    @Column(name = "match_id")
    int matchId;

    @Column(name = "position_id")
    int positionId;

    public PlayerMatchPositionsId(){}

    public PlayerMatchPositionsId(int playerId, int matchId, int positionId) {
        this.playerId = playerId;
        this.matchId = matchId;
        this.positionId = positionId;
    }

    public int getPlayerId() {
        return playerId;
    }

    public void setPlayerId(int playerId) {
        this.playerId = playerId;
    }

    public int getMatchId() {
        return matchId;
    }

    public void setMatchId(int matchId) {
        this.matchId = matchId;
    }

    public int getPositionId() {
        return positionId;
    }

    public void setPositionId(int positionId) {
        this.positionId = positionId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof PlayerMatchPositionsId)) return false;
        PlayerMatchPositionsId that = (PlayerMatchPositionsId) o;
        return Objects.equals(playerId, that.playerId) &&
                Objects.equals(positionId, that.positionId)&&
                Objects.equals(matchId, that.matchId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(playerId, positionId, matchId);
    }
}

ДАО:

package nba_statistics.dao.classes;

import nba_statistics.dao.interfaces.IPlayerMatchPositionsDao;
import nba_statistics.entities.*;

public class PlayerMatchPositionsDao extends Dao implements IPlayerMatchPositionsDao {

    public void persist(PlayerMatchPositions entity) {
        getCurrentSession().save(entity);
    }

    @Override
    public int getData(Players player, Matches match, Positions position){
        if(player == null)
        {
            return 1;
        }
        if(match==null)
        {
            return 2;
        }
        if(position==null)
        {
            return 3;
        }

        PlayerMatchPositions playerMatchPositions = new PlayerMatchPositions();
        playerMatchPositions.setPlayer(player);
        playerMatchPositions.setMatch(match);
        playerMatchPositions.setPosition(position);
        playerMatchPositions.setId(new PlayerMatchPositionsId(player.getId(),match.getId(),position.getId()));
        persist(playerMatchPositions);
        return 0;
    }
}

В другом классе я делаю это аналогично, и все хорошо, только в этом классе он не добавляет в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...