org.hibernate.exception.ConstraintViolationException: NULL Не допускается для столбца - PullRequest
0 голосов
/ 05 марта 2020

Итак, у меня есть класс TraegerArt:

/** This class is the data class for container types */
@Getter
@Setter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@RequiredArgsConstructor
public class TraegerArt {

    /** On delete set to invalid */
    @NonNull
    private boolean isValidData = true;

    /** Container Type */
    @Id
    @NonNull
    private String art;

    @Override
    public String toString() {
        return "art='" + art;
    }
}

И у меня есть класс ProzessSchritt, который должен содержать List из TraegerArts:

@Getter
@Setter
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@RequiredArgsConstructor
@NamedQueries({
    @NamedQuery(name = "PS.getAllAvailable", query = "select ps from ProzessSchritt ps where ps.isValidData=true and ps.assigned = false")
})
public class ProzessSchritt implements Serializable {

    /**
     * Valid data
     */
    private boolean isValidData = true;

    /**
     * ID
     */
    @Id
    @NonNull
    private int id;

    /** Whether this step is assigned to a job */
    private boolean assigned = false;

    /**
     * Process step state automaton
     */
    @NonNull
    @ManyToOne
    private ProzessSchrittZustandsAutomat prozessSchrittZustandsAutomat;

    /**
     * Duration of the process step
     */
    @NonNull
    private String duration;

    /**
     * Process step parameters
     */
    @NonNull
    @ManyToMany(fetch = FetchType.LAZY)
    private List <ProzessSchrittParameter> prozessSchrittParameters;

    /**
     * Process step attributes
     */
    @NonNull
    private String attribute;

    /** Process step transport job */
    @ManyToOne
    private TransportAuftrag transportAuftrag;

    /** Process step log */
    @NonNull
    @OneToMany
    private List <ProzessSchrittLog> prozessSchrittLog;

    /**
     * Process step name
     */
    @NonNull
    private String name;

    /** Urformend */
    @NonNull
    private boolean urformend;

    /** If urformend, amount created */
    @NonNull
    private int amountCreated;

    /** ID of created samples */
    private String createdName;

    /** Accepted input container types */
    @ManyToMany(fetch = FetchType.LAZY)
    private List <TraegerArt> eingabe;

    /** Output container types */
    @ManyToMany(fetch = FetchType.LAZY)
    private List <TraegerArt> ausgabe;

    boolean uploaded = false;

    @Override
    public String toString() {
        return name;
    }
}

По какой-то странной причине сохранение любого из других списков работает, однако при попытке сохранения TraegerArts я получаю исключение:

Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column \"EINGABE_ART\"; SQL statement:
insert into ProzessSchrittVorlage_TraegerArt (ProzessSchrittVorlage_psVID, ausgabe_art) values (?, ?) [23502-193]"}}

И я не совсем понимаю, почему это происходит Я понял это, вероятно, из-за String, который установлен как @Id, однако мне нужно, чтобы он оставался таким.

Любая помощь очень ценится:]

...