Я получил исключение: двойное значение ключа нарушает уникальное ограничение "client_pkey"
Ключ (xmppid) = (xyz813 @ deweet / prototype1006) уже существует.
Моя конфигурация - Tomcat 6.0, hibernate 3.3.1, c3pO 0.9.2 или dbcp.
Я не знаю, как этого избежать, я думал, что сделать это UniqueConstraint
и вызвать его в транзакции должно единолично все.
Не могли бы вы дать мне понять, что я делаю не так?
@Override
@Transactional(readOnly = false)
public Client createClient(String userid) {
Client c = new Client(userid);
currentSession().save(c);
return c;
}
Класс клиента определен как показано ниже
@Entity
@Table(name = "CLIENT", uniqueConstraints = { @UniqueConstraint(columnNames = { "xmppId" }) })
public class Client {
@Id
private String xmppId;
@Override
public boolean equals(Object o) {
Client c = (Client) o;
if (c.xmppId.equals(this.xmppId))
return true;
return false;
}
@Override
public int hashCode() {
return this.xmppId.hashCode();
}
...
}
Это не указывает непосредственно на этот метод, но на $ Proxy23.createClient, но я думаю, что это
единственное место, где я создаю и сохраняю клиента.
в $ Proxy23.createClient (неизвестно
Источник) в
pl.samsung.cs.deweet.server.RequestHandler.onAddVirtualDevice (RequestHandler.java:182)
в
pl.samsung.cs.deweet.server.RequestHandler.handleRequests (RequestHandler.java:117)
в
pl.samsung.cs.deweet.network.impl.XmppNetContext $ 8 $ 1.run (XmppNetContext.java:518)
на java.lang.Thread.run (неизвестно
Источник)