无法使用JPA插入数据库。尝试合并,持久化和INSERT查询

时间:2015-03-05 11:24:10

标签: java hibernate jpa

我正在尝试在AttributeName中添加一个条目:

@Entity
public class AttributeName implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "attNameId", nullable = false)
    private Long attNameId;

    @Column(name = "attName", unique = true, nullable = false, length = 200)
    private String attName;

    @Column(name = "required", nullable = false)
    private boolean required;

    ...

@Stateless
@LocalBean
public class AttributeNameManagerBean implements AttributeNameManagerRemote
{
    @PersistenceContext(unitName = "mainPU")
    private EntityManager entityManager;

    public AttributeNameManagerBean()
    {

    }

    ...

我首先必须添加此条目并使用新创建的id插入存储此id的Attribute(链接到AttributeValue)。

我试过了:

  • AttributeName savedAttName = entityManager.merge(newAttName);
  • entityManager.persist(newAttName); entityManager.flush();
  • entityManager.create(Native)Query("INSERT...");

我稍后收到ConstraintViolationException但主要问题是上述3个表单中的任何一个中的insert语句都不会抛出异常,但是当我查询数据库时,新条目不存在。 在第一个示例中,savedAttName包含新生成的unqiue PK:S

注意:我确信attName是数据库中新的唯一条目。]

非常感谢任何帮助。如果需要,很乐意提供更多信息。

编辑:属性中有一个attNameId字段。属性有两个独特的约束:

uniqueConstraints={ @UniqueConstraint(columnNames = {"attNameId", "attValueId"} ), @UniqueConstraint(columnNames = {"sectionId", "sectionIndex"} )}

输入的sectionId和sectionIndex是一个唯一的组合,当前在AttributeName中不存在(只有一个条目,我手动插入)。

修正: 从表中删除了约束,重新部署。然后删除表,重新添加约束,它的工作原理。我猜它没有正确设置约束。

0 个答案:

没有答案