私はNeo4Jが初めてで、おそらく簡単な質問があります。
私のアプリケーションには NodeEntitys があり、@Column(unique = true) を使用して JPA で行っているように、プロパティ (name) に @Indexed(unique = true) の注釈が付けられて一意性を実現しています。
私の問題は、グラフに既に存在する名前のエンティティを永続化すると、とにかく正常に動作することです。しかし、私はここである種の例外を期待していました...?! 基本的な私のコードの概要は次のとおりです。
@NodeEntity
public abstract class BaseEntity implements Identifiable
{
@GraphId
private Long entityId;
...
}
public class Role extends BaseEntity
{
@Indexed(unique = true)
private String name;
...
}
public interface RoleRepository extends GraphRepository<Role>
{
Role findByName(String name);
}
@Service
public class RoleServiceImpl extends BaseEntityServiceImpl<Role> implements
{
private RoleRepository repository;
@Override
@Transactional
public T save(final T entity) {
return getRepository().save(entity);
}
}
そして、これは私のテストです:
@Test
public void testNameUniqueIndex() {
final List<Role> roles = Lists.newLinkedList(service.findAll());
final String existingName = roles.get(0).getName();
Role newRole = new Role.Builder(existingName).build();
newRole = service.save(newRole);
}
それは私が何かがうまくいかないことを期待するポイントです!自分でチェックせずに、プロパティの一意性を確認するにはどうすればよいですか??
PS: 私は neo4j 1.8.M07、spring-data-neo4j 2.1.0.BUILD-SNAPSHOT および Spring 3.1.2.RELEASE を使用しています。