Итак, у меня есть класс 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
, однако мне нужно, чтобы он оставался таким.
Любая помощь очень ценится:]