当我尝试在hiberate中使用 ManyToOne 关系时,我收到了重复的密钥异常。我相信我可以在这里发布图片。
entity diagram http://i39.tinypic.com/ilaxko.png
这些是我的课程。
当我尝试执行单元测试时,我得到以下异常。
Caused by: com.mysql.jdbc.exceptions.jdbc4
.MySQLIntegrityConstraintViolationException:
Duplicate entry 'album1' for key 'TITLE'
我的单元测试课程如下。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/test/ApplicationContext-unitFav.xml"})
public class MusicDaoImplTest{
@Autowired
private MusicDao musicDao;
@Test
public void testAddSong() {
Album album = new Album("album1","movie",2009);
Singer singer = new Singer("singer 1",new Date());
Song song = new Song("song 1",album,singer,0);
musicDao.addSong(song);
}
}
这次错在哪儿?当我使用ManyToOne注释时,我定义ManyToOne Annotation的类成为多边,而另一个类成为One侧。请注意,当我第二次运行单元测试时,我遇到了这个例外。
谢谢, 阿伦
答案 0 :(得分:1)
测试在数据库中创建歌曲,签名者和专辑。并且您在数据库中对专辑表的列TITLE有一个唯一约束。因此,第二次运行测试时,由于上一次运行已经创建了一个具有相同标题的相册,因此会出现异常。
确保始终从空数据库开始,或者在最后使用自动回滚使测试成为事务性的。
有关解释,请参阅the documentation。
无耻插件:要始终使用包含众所周知数据集的数据库开始测试,您可以考虑使用DbSetup。