Использование JPA У меня есть dataconfiguration, который добавляется в базу данных без каких-либо проблем:JPA не добавляет Id в базу данных из оберточной объекта
@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;
Этот Dataconfiguration содержит список Contents (один-ко-многим) , другие отображения (шаблоны ан 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;
}
создать метод является частью AbstractFacade
public void create(T entity)
{
getEntityManager().persist(entity);
getEntityManager().flush();
}
Когда я исполню все, кроме метода Идентификатор dataconfiguration в таблице контента сохраняется. (Внешний ключ данных не сохраняется в содержимом) Любые подсказки и/или советы очень полезны!
Мне удалось избежать проблемы с помощью NativeQuery, но я все равно хотел бы знать, что пошло не так с кодом выше. –