Java JPA不会从包装对象向数据库添加Id
使用JPA,我有一个dataconfiguration,它被添加到数据库中,没有任何问题:Java JPA不会从包装对象向数据库添加Id,java,mysql,jpa,insert,entitymanager,Java,Mysql,Jpa,Insert,Entitymanager,使用JPA,我有一个dataconfiguration,它被添加到数据库中,没有任何问题: @Entity @Table(name = "dataConfigurations", uniqueConstraints = {@UniqueConstraint(columnNames = {"name"})}) @NamedQueries({@NamedQuery(name = "DataConfigurations.names", query = "SELECT d.name FRO
@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;
这是启动保存方法的控制器方法:
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();
}
当我执行该方法时,除了内容表中的dataconfiguration的Id之外,所有内容都被保存。
(数据配置的外键未保存在内容中)
任何提示和/或提示都会非常有用 您可能忘记初始化每个内容的字段
dataConfiguration
。这是映射到联接列的一个,因此Hibernate将对其进行检查以确定两个实体之间是否存在关联 我通过使用entitymanager的NativeQuery成功地避免了这个问题,但我仍然想知道上面的代码出了什么问题。
public void create(T entity)
{
getEntityManager().persist(entity);
getEntityManager().flush();
}