Hibernate OneToMany не заполняет список - PullRequest
0 голосов
/ 01 марта 2019

Я проверил все ответы на похожие вопросы, но я не нашел решения.У меня проблема с приложением OneToMany Hibernate.У меня есть две очень простые сущности:

@Entity
public class SWBSubmission {

    private Integer swbSubmissionID;
    private Integer shipmentID;
    private String declarationNo;
    private List<SWBSubmissionAttempt> attempts = new ArrayList<>();

    @Id
    @GeneratedValue
    public Integer getSWBSubmissionID() {
        return swbSubmissionID;
    }

    public void setSWBSubmissionID(Integer swbSubmissionID) {
        this.swbSubmissionID = swbSubmissionID;
    }

    public Integer getShipmentID() {
        return shipmentID;
    }

    public void setShipmentID(Integer shipmentID) {
        this.shipmentID = shipmentID;
    }

    @Column(insertable = false, updatable = false)
    @Generated(GenerationTime.ALWAYS)
    public String getDeclarationNo() {
        return declarationNo;
    }

    public void setDeclarationNo(String declarationNo) {
        this.declarationNo = declarationNo;
    }

    @OneToMany(mappedBy="swbSubmission")
    public List<SWBSubmissionAttempt> getAttempts() {
        return attempts;
    }

    public void setAttempts(List<SWBSubmissionAttempt> attempts) {
        this.attempts = attempts;
    }
}

и

@Entity
public class SWBSubmissionAttempt {

    private Integer swbSubmissionAttemptID;
    private Timestamp submissionDateTime;
    @ManyToOne
    @JoinColumn(name="SWBSubmissionID", nullable=false)
    private SWBSubmission swbSubmission;


    @Id
    @GeneratedValue
    public Integer getSwbSubmissionAttemptID() {
        return swbSubmissionAttemptID;
    }

    public void setSwbSubmissionAttemptID(Integer swbSubmissionAttemptID) {
        this.swbSubmissionAttemptID = swbSubmissionAttemptID;
    }

    @ManyToOne
    @JoinColumn(name = "SWBSubmissionID")
    public SWBSubmission getSwbSubmission() {
        return swbSubmission;
    }

    public void setSwbSubmission(SWBSubmission swbSubmission) {
        this.swbSubmission = swbSubmission;
    }

    public Timestamp getSubmissionDateTime() {
        return submissionDateTime;
    }

    public void setSubmissionDateTime(Timestamp submissionDateTime) {
        this.submissionDateTime = submissionDateTime;
    }
}

Обновление на обеих таблицах работает отлично.Вот, например, данные, вставленные в:

SWBSubmission:

SWBSubmissionID ShipmentID  DeclarationNo
1   15  2019FEB00000015
2   16  2019FEB00000016

и SWBSubmissionAttempt

SWBSubmissionAttemptID  SWBSubmissionID SubmissionDateTime
1   2   2019-02-28 10:50:19.687
2   2   2019-02-28 11:16:50.173
3   2   2019-02-28 11:17:37.973
5   2   2019-02-28 13:49:40.957

Вот моя проблема.В моем приложении, когда я делаю следующее, я не получаю записи из таблицы сведений:

SWBSubmissionService swbSubmissionService = new SWBSubmissionServiceImp();
shipmentService.beginTransaction();
Integer increment = swbSubmissionService.findByShipmentID(shipment.getShipmentID()).getAttempts().size() + 1;
System.println(increment)
shipmentService.commitTransaction();

Приращение всегда равно нулю, поскольку SWBSubmission не находит записи SWBSubmissionAttempt.

Iпопробовал fetch.EAGER;попробовал обновить, но это не имеет значения.Нет, сообщается об ошибке, и с включенным SHOW_SQL в файле cfg я не вижу никакого генерируемого SQL для таблицы подробностей.Я был на этом весь день.

Любая идея, кто угодно.

Спасибо

Клайд

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