0

再会!我尝试创建具有唯一 ID 和唯一名称的实体。所以,

@MappedSuperclass
public class BaseEntityImpl implements Serializable, BaseEntity
{
  @Id
  @GeneratedValue
  protected Long id;

  @Column(unique = true)
  protected String name;
//here are getters and setters
}

@Entity
public class SimpleEntity extends BaseEntityImpl
{ 
}

这是我的 DAO

@Transactional(propagation = Propagation.MANDATORY)
public class SimpleDaoImpl extends HibernateDaoSupport implements SimpleDao
{
   public SimpleEntity createOrUpdate(SimpleEntity entity)
   {
       getSession().saveOrUpdate(entity);
       return entity;
   }
}

这是我的单元测试(在内存德比数据库中使用)

@Test
public void create()
{
    SimpleEntity entity = new SimpleEntity();
    entity.setName("name1");

    SimpleEntity entity2 = new SimpleEntity();
    entity2.setName("name1");

    simpleDao.createOrUpdate(entity);
    simpleDao.createOrUpdate(entity2);
}

我希望这个测试会抛出异常,因为我尝试保存两个具有相同名称的实体,但它工作正常!

我哪里错了?

4

1 回答 1

0

所以,很可能是 derby 忽略了 Unique Constraint。在 MySql DB 中一切正常

于 2013-07-04T12:46:50.903 回答