1
好吧,所以我是新的休眠。 問題是關於級聯多對多,避免添加重複值。 所以我遵循這個例子。 tutorialspoint hibernate many to many mappingHibernate級聯多對多在子參考中創建重複項
問題是這樣的,如果我運行程序兩次,它會將重複值添加到證書表。
將值插入到employee表後。這瀑布和插入值證書表:
id certificate_name
1 PMP
2 MBA
3 MCA
後,我運行這個例子它做同樣的動作第二次。
id certificate_name
1 PMP
2 MBA
3 MCA
4 PMP
5 MBA
6 MCA
但是,然後證書表具有dublicate值。值4-6與1-3相同。
我嘗試添加表證書唯一約束,但後來我得到這個錯誤:
ERROR: Duplicate entry 'PMP' for key 'certificate_name_UNIQUE'
我如何可以插入值,不要重複它們。 這可以避免,或者我必須使用其他技術來做到這一點。
如果需要使用罐子,還可以添加pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testHibernateCascade2</groupId>
<artifactId>testHibernateCascade2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.31</version>
</dependency>
</dependencies>
</project>
需要更多的細節,添加實體的細節和代碼如何保存實體。 – Chaitanya 2014-09-23 11:36:38
如果您使用的方法類似於示例中的方法,那麼如果再次運行它,則它正確地再次添加一些東西。沒有檢查重複項。我想你可以添加一個修改的listEmployees(帶有搜索參數)並檢查該員工是否已經存在。 – Feroc 2014-09-23 11:38:38
這裏有更多的問題比你想象的要多;該示例使用了一個Set,它在到達數據庫之前應該已經防止了重複性...如果實體上的equals和hashcode方法被正確實現。 – Gimby 2014-09-23 11:42:27