当我尝试在Derby DB中使用Entitymanger持久化对象时出现以下错误:-

 Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL150318192139760' defined on 'TESTSEARCHS '.
    Error Code: 20000
    Call: INSERT INTO TESTSEARCHS (SEARCHID) VALUES (?)
        bind => [1 parameter bound]
    Query: InsertObjectQuery(example.com.TestSearchs@4e049f)

关联的代码是:-
  public class TestA extends SuperA{
            @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
            protected TestSearchs testSearchs;
    ........
        }

SuperA类提供TestA的ID
  @Entity
  @XmlTransient
  @MappedSuperclass
  @Inheritance(strategy = InheritanceType.JOINED)
  public class SuperA{
      @Id
      private String id;
    .........

    }

并且TestSearchs类是:-
public class TestSearchs {

    @Id
    @GeneratedValue
    @XmlTransient
    private long searchId;

    @ElementCollection(targetClass = String.class,fetch = FetchType.EAGER)
    protected List<String> testsearch=new ArrayList<String>();

.....

}

我通过调用唯一的TestA的setter来设置ID,然后我使用entityManager.Persit()允许了TestA对象,但是发生了以下错误。请告诉我我做错了什么?

最佳答案

这对TestSearchs有帮助吗?

@GeneratedValue(strategy = GenerationType.TABLE)

10-06 02:20