Last active
December 30, 2015 03:59
-
-
Save mmalmeida/7772798 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "trial_locations_pkey" | |
| Detail: Key (trial_id, locations_id)=(6, 5) already exists. | |
| Code: | |
| package test; | |
| import hibernateTest.Location; | |
| import hibernateTest.Trial; | |
| import org.junit.Test; | |
| public class HibernateTest extends HibernateAbstractTest { | |
| @Test | |
| public void failedTest() { | |
| setUp(); | |
| getSession().createCriteria(Location.class).list(); | |
| } | |
| @Test | |
| public void refreshTest() { | |
| Trial trial = setUp(); | |
| getSession().refresh(trial); | |
| getSession().createCriteria(Location.class).list(); | |
| } | |
| @Test | |
| public void evictTest() { | |
| Trial trial = setUp(); | |
| getSession().evict(trial); | |
| getSession().createCriteria(Location.class).list(); | |
| } | |
| /** | |
| * @return | |
| */ | |
| private Trial setUp() { | |
| Location location = new Location("name", "code"); | |
| save(location); | |
| Trial trial = new Trial(); | |
| location.addTrial(trial); | |
| save(trial); | |
| getSession().createCriteria(Location.class).list(); | |
| location.setCode("other"); | |
| getSession().update(location); | |
| update(trial); | |
| return trial; | |
| } | |
| } | |
| *********************************************Trial************************* | |
| package hibernateTest; | |
| import java.util.SortedSet; | |
| import java.util.TreeSet; | |
| import javax.persistence.Column; | |
| import javax.persistence.Entity; | |
| import javax.persistence.GeneratedValue; | |
| import javax.persistence.GenerationType; | |
| import javax.persistence.Id; | |
| import javax.persistence.JoinTable; | |
| import javax.persistence.ManyToMany; | |
| import javax.persistence.Table; | |
| import org.hibernate.annotations.Sort; | |
| import org.hibernate.annotations.SortType; | |
| import org.hibernate.envers.Audited; | |
| /** | |
| * Trial generated by hbm2java | |
| */ | |
| @Entity | |
| @Table(name = "clinical_trial", schema = "clinical") | |
| @Audited | |
| public class Trial implements java.io.Serializable { | |
| @Id | |
| @Column(name = "id", unique = true, nullable = false) | |
| @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PK_TRIAL") | |
| private int id; | |
| private String name; | |
| private String code; | |
| @ManyToMany(targetEntity=Location.class) | |
| @JoinTable(schema="clinical") | |
| @Sort(type = SortType.COMPARATOR,comparator=StringNumberComparator.class) | |
| private SortedSet<Location> locations = new TreeSet<Location>(new StringNumberComparator()); | |
| public Trial() { | |
| } | |
| public int getId() { | |
| return id; | |
| } | |
| public void setId(int id) { | |
| this.id = id; | |
| } | |
| public String getName() { | |
| return name; | |
| } | |
| public void setName(String name) { | |
| this.name = name; | |
| } | |
| public String getCode() { | |
| return code; | |
| } | |
| public void setCode(String code) { | |
| this.code = code; | |
| } | |
| public SortedSet<Location> getLocations() { | |
| return locations; | |
| } | |
| public void setLocations(SortedSet<Location> locations) { | |
| this.locations = locations; | |
| } | |
| @Override | |
| public String toString() { | |
| if(getCode() == null) { | |
| return ""; | |
| } | |
| return getCode(); | |
| } | |
| @Override | |
| public int hashCode() { | |
| final int prime = 31; | |
| int result = 1; | |
| result = prime * result + ((getCode() == null) ? 0 : getCode().hashCode()); | |
| result = prime * result + ((getName() == null) ? 0 : getName().hashCode()); | |
| return result; | |
| } | |
| @Override | |
| public boolean equals(Object obj) { | |
| if (this == obj) | |
| return true; | |
| if (obj == null) | |
| return false; | |
| if ( !(obj instanceof Trial) ) return false; | |
| Trial other = (Trial) obj; | |
| if (getCode() == null) { | |
| if (other.getCode() != null) | |
| return false; | |
| } else if (!getCode().equals(other.getCode())) | |
| return false; | |
| if (getName() == null) { | |
| if (other.getName() != null) | |
| return false; | |
| } else if (!getName().equals(other.getName())) | |
| return false; | |
| return true; | |
| } | |
| } | |
| ******************************************Location***************************************** | |
| package hibernateTest; | |
| import javax.persistence.Column; | |
| import javax.persistence.Entity; | |
| import javax.persistence.GeneratedValue; | |
| import javax.persistence.GenerationType; | |
| import javax.persistence.Id; | |
| import javax.persistence.Table; | |
| import org.hibernate.envers.Audited; | |
| @Entity | |
| @Table(schema = "clinical", name="location") | |
| @Audited | |
| public class Location { | |
| @Id | |
| @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PK_TRIAL") | |
| private int id; | |
| private String name; | |
| @Column(nullable=false) | |
| private String code; | |
| public Location() { | |
| } | |
| public Location(String name) { | |
| this.name = name; | |
| } | |
| public Location(String name, String code) { | |
| super(); | |
| this.name = name; | |
| this.code = code; | |
| } | |
| public Location(int id) { | |
| setId(id); | |
| } | |
| public String getName() { | |
| return name; | |
| } | |
| public void setName(String name) { | |
| this.name = name; | |
| } | |
| public String getCode() { | |
| return code; | |
| } | |
| public void setCode(String code) { | |
| this.code = code; | |
| } | |
| public void addTrial(Trial trial) { | |
| if(trial == null){ | |
| return; | |
| } | |
| trial.getLocations().add(this); | |
| } | |
| public boolean removeTrial(Trial trial) { | |
| if(trial != null && trial.getLocations() != null){ | |
| boolean removed = trial.getLocations().remove(this); | |
| return removed; | |
| } | |
| return false; | |
| } | |
| @Override | |
| public int hashCode() { | |
| final int prime = 31; | |
| int result = 1; | |
| result = prime * result + ((getCode() == null) ? 0 : getCode().hashCode()); | |
| result = prime * result + ((getName() == null) ? 0 : getName().hashCode()); | |
| return result; | |
| } | |
| @Override | |
| public boolean equals(Object obj) { | |
| if (this == obj) | |
| return true; | |
| if (obj == null) | |
| return false; | |
| if ( !(obj instanceof Location) ) return false; | |
| Location other = (Location) obj; | |
| if (getCode() == null) { | |
| if (other.getCode() != null) | |
| return false; | |
| } else if (!getCode().equals(other.getCode())) | |
| return false; | |
| if (getName() == null) { | |
| if (other.getName() != null) | |
| return false; | |
| } else if (!getName().equals(other.getName())) | |
| return false; | |
| return true; | |
| } | |
| public int getId() { | |
| return id; | |
| } | |
| public void setId(int id) { | |
| this.id = id; | |
| } | |
| @Override | |
| public String toString(){ | |
| if(getName() == null){ | |
| return ""; | |
| } | |
| return getName(); | |
| } | |
| } | |
| *****************************************STACKTRACE********************************** | |
| org.hibernate.exception.ConstraintViolationException: could not execute statement | |
| at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:129) | |
| at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) | |
| at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) | |
| at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) | |
| at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136) | |
| at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:58) | |
| at org.hibernate.persister.collection.AbstractCollectionPersister.insertRows(AbstractCollectionPersister.java:1474) | |
| at org.hibernate.action.internal.CollectionUpdateAction.execute(CollectionUpdateAction.java:86) | |
| at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:393) | |
| at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:385) | |
| at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:306) | |
| at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339) | |
| at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:62) | |
| at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1211) | |
| at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1661) | |
| at org.hibernate.internal.CriteriaImpl.list(CriteriaImpl.java:374) | |
| at test.HibernateTest.failedTest(HibernateTest.java:13) | |
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | |
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | |
| at java.lang.reflect.Method.invoke(Method.java:597) | |
| at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) | |
| at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) | |
| at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) | |
| at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) | |
| at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) | |
| at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) | |
| at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72) | |
| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231) | |
| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88) | |
| at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) | |
| at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) | |
| at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) | |
| at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) | |
| at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) | |
| at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) | |
| at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) | |
| at org.junit.runners.ParentRunner.run(ParentRunner.java:309) | |
| at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174) | |
| at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) | |
| at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) | |
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) | |
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) | |
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) | |
| at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) | |
| Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "clinical_trial_locations_pkey" | |
| Detail: Key (clinical_trial_id, locations_id)=(6, 5) already exists. | |
| at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102) | |
| at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835) | |
| at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) | |
| at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500) | |
| at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388) | |
| at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:334) | |
| at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105) | |
| at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133) | |
| ... 40 more | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment