我正在尝试在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中不存在(只有一个条目,我手动插入)。
修正: 从表中删除了约束,重新部署。然后删除表,重新添加约束,它的工作原理。我猜它没有正确设置约束。