重复录入' nn'对于关键' ....'

时间:2015-10-06 20:09:57

标签: java hibernate

我收到这个错误很多,当我尝试将对象插入mySQL数据库中的表时,我的hibernate表现得很奇怪。

okt. 06, 2015 9:57:28 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1062, SQLState: 23000
okt. 06, 2015 9:57:28 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Duplicate entry '77' for key 'UK_2gy9x2d1hqmk0d77o8ux44c6o'
okt. 06, 2015 9:57:28 PM org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
org.hibernate.exception.ConstraintViolationException: could not execute statement

当我查看MySQL的WOrkbench时,我可以看到,无论何时我持久化或合并,我都会在数据库表中获得重复的行。

我使用这两种方法来持久化和合并:

public void persist(Object entity) {
        session = HibernateUtil.getSessionFactory().getCurrentSession();    
        session.beginTransaction();
        session.persist(entity);
        session.flush();
        session.getTransaction().commit();
    }

public void merge(Object entity) {
        session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();     
        session.merge(entity);
        session.flush();
        session.getTransaction().commit();      
    }

我的用户类有一个带注释类的ManyToMany。

@ManyToMany( fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST }  )
@JoinTable(
        name = "user_note",
        joinColumns = {@JoinColumn(name = "empId")},
        inverseJoinColumns = {@JoinColumn(name = "note_id")})
private Set<Note> bookmarks = new HashSet<>();

请注意:

@Id  
    @GeneratedValue(strategy=GenerationType.AUTO)
    private long projectId; 

和第三个与注释具有OneToMany关系的类。

@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
    @JoinTable(name = "organisation_note", joinColumns = { @JoinColumn(name = "OrganisationId") }, inverseJoinColumns = { @JoinColumn(name = "note_id") })
    private Set<Note> bookmarks = new HashSet<>();

我一直在四处寻找,似乎无法找到数据库中重复行的任何主题。第一个持久化不会复制该行,但第二个将继续,第三个将抛出异常。在那之后,每次我尝试坚持之后它都是例外。哪个不可靠。任何意见都表示赞赏。

0 个答案:

没有答案