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;
   }
}

そして、これが私の単体テストです(メモリ内ダービーdbを使用)

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

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

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

2 つのエンティティを同じ名前で保存しようとしたため、このテストで例外がスローされることを期待していますが、問題なく動作します。

どこが間違っていますか?

4

1 に答える 1

0

そのため、derby は Unique Constraint を無視している可能性があります。MySql DB ではすべて正常に動作します

于 2013-07-04T12:46:50.903 に答える