我想让用户节点中的 userName 属性唯一。我使用了下面的代码,但它不会在 Neo4j 数据库中创建唯一约束。
@Property(name = "name")
@Index(unique = true)
private String usreName;
Run Code Online (Sandbox Code Playgroud)
仅供参考,我正在使用 Neo4j 服务器版本:3.3.6(社区)和 Spring Boot 2。
但是如果我自己在 Neo4j 浏览器中创建约束,它就可以工作。
CREATE CONSTRAINT ON (user:User) ASSERT user.userName IS UNIQUE
Run Code Online (Sandbox Code Playgroud)
有没有办法强制 Spring Data Neo4J 创建独特的属性,而无需自己在数据库中创建它们?
当我想将信息作为 post 方法发送到我的 Rest API 时,Angular 会发送空字段,随后我的数据库会保存空值。
但我想阻止它,并且我不想将空字段从我的 Angular 发送到我的后端。
例如,在下面的示例中,Angular 在entityTypeName 字段中发送“”,不幸的是,Postgres DB 将保存空而不是空。
{
createdAt: "2019-01-11T13:59:52.311678"
entityTypeName: ""
id: "1bd46fce-fc6f-410f-acaf-74d5964cf92b"
updatedAt: "2019-01-11T13:59:52.311678"
updatedBy: "admin@admin.com"
version: 0
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种通用的解决方案,以防止在所有情况下在 Angular 端发送空值。
我对 Spring AOP 有疑问。我想在切入点中获取 Student 对象。但我的 JoinPoints 可以以任何优先级拥有该对象。
查看下面的代码片段,了解我创建的两个不同的连接点和切入点:
public Student createStudent(String s, Student student) {...}
public Student updateStudent(Student student, String s) {...}
@Before("args(..,com.hadi.student.Student)")
public void myAdvice(JoinPoint jp) {
Student student = null;
for (Object o : jp.getArgs()) {
if (o instanceof Student) {
student = (Student) o;
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码仅适用于第一个 JoinPoint。所以问题是如何创建一个切入点,该切点将在输入参数中针对 Student 的任何情况执行。
我无法使用下面的代码,它抛出runtimeException:
@Before("args(..,com.hadi.student.Student,..)")
我让代码变得容易理解,实际上我的切入点比这个大得多。所以请用args方式回答。