Используя JPA, у меня есть конфигурация данных, которая без проблем добавляется в базу данных:
@Entity @Table(name = "dataConfigurations", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"})})
@NamedQueries({@NamedQuery(name = "DataConfigurations.names", query = "SELECT d.name FROM DataConfiguration d"), @NamedQuery(name = "DataConfiguration.findByName", query = "SELECT d FROM DataConfiguration d WHERE d.name = :name")})
public class DataConfiguration implements Serializable
{
@Transient
private static final long serialVersionUID = 1L;
@Id //@GeneratedValue(strategy = GenerationType.)
//@TableGenerator(name = "dataConfigurationSequence", table = "Sequences", pkColumnName = "NameSequences", valueColumnName = "valueSequence", pkColumnValue = "dataConfigurationId")
private long id;
@OneToMany(mappedBy = "dataConfiguration", cascade = CascadeType.ALL)
private List<Content> contents; // "Data" is a reserved SQL word.
@ManyToMany(mappedBy = "dataConfigurations", cascade = CascadeType.ALL)
private List<LabelType> labelTypes;
private String name;
@OneToMany(mappedBy = "dataConfiguration", cascade = CascadeType.ALL
private List<Template> templates;
Эта конфигурация данных содержит список содержимого (отношение один ко многим), другие сопоставления (шаблоны en labelTypes)пока не имеет значения, но будет позже в моей программе, они, вероятно, вызовут ту же проблему, что и я с содержимым)
@Entity @Table(name = "contents", uniqueConstraints = {@UniqueConstraint(columnNames = {"dataConfigurationId", "displayOrder"})})
public class Content implements Serializable
{
@Transient
private static transient final long serialVersionUID = 1L;
@Id //@GeneratedValue(strategy = GenerationType.IDENTITY)
//@TableGenerator(name = "contentSequence", table = "Sequences", pkColumnName = "NameSequences", valueColumnName = "valueSequence", pkColumnValue = "contentId")
private long id;
private String content; // "Data" is a reserved word in traditional SQL.
@ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "dataConfigurationId")
private DataConfiguration dataConfiguration;
private int displayOrder;
private int editableFrom;
private String typeDiscriminator;
Это метод контроллера, который инициирует метод сохранения:
public String saveDataConfiguration()
{
dataConfiguration = new DataConfiguration(getNextId(), dataConfigurationName, contents);
dataConfigurationFacade.create(dataConfiguration);
return null;
}
Метод create является частью AbstractFacade
public void create(T entity)
{
getEntityManager().persist(entity);
getEntityManager().flush();
}
Когда я выполняю метод, все, кроме Id конфигурации данных в таблице содержимого, сохраняется.(Внешний ключ конфигурации данных не сохраняется в содержимом). Любые советы и / или советы будут очень полезны!