我们有Spring Data JPA的功能,我们在其中使用querydsl,如下所示
这是我的实体:
@Entity
@RestResource(path = "car", rel = "car")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CarEntity extends VehicleEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long inventoryId;
@Column(length = 50)
private String make;
@Column(length = 50)
private String model;
@Column(length = 500)
private String vin;
@Column(length = 500)
private String type;
}
这是我的知识库:
@RepositoryRestResource(path = "car")
@CrossOrigin(origins = "*")
public interface CarEntityRepository extends PagingAndSortingRepository<CarEntity, Long>,
QueryDslPredicateExecutor<CarEntity>, QuerydslBinderCustomizer<QCarEntity> {
@Override
default public void customize(QuerydslBindings bindings, QCarEntity root) {
bindings.bind(String.class).first(
(StringPath path, String value) -> path.likeIgnoreCase(value));
}}
通过上面的代码,我能够实现QueryDSL功能,并根据实体中的任何字段查询实体。
现在,当我们从sql server迁移到Neo4j时,这里是我的实体
@NodeEntity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class CarEntity extends VehicleEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long inventoryId;
@Column(length = 50)
private String make;
@Column(length = 50)
private String model;
@Column(length = 500)
private String vin;
@Column(length = 500)
private String type;
}
这是我的知识库
@CrossOrigin("*")
public interface CarRepository extends
Neo4jRepository<CarEntity,Long> {}
这些是我的Neo4j应用程序的一些版本和属性
springBootVersion = '2.0.4.RELEASE'
dependencies {
// Neo4j
compile ('org.neo4j:neo4j:3.4.9')
compile ('org.neo4j.driver:neo4j-java-driver:1.7.2')
compile('org.springframework.boot:spring-boot-starter-data-neo4j')
compile ('org.hibernate.ogm:hibernate-ogm-neo4j:5.4.1.Final')
// Spring
compile('org.springframework.boot:spring-boot-starter')
compile('org.springframework.cloud:spring-cloud-starter-config')
compile('org.springframework.boot:spring-boot-starter-data-rest')
compile('org.springframework.boot:spring-boot-starter-actuator')
compile('org.springframework.boot:spring-boot-starter-web')
//lombok
compileOnly('org.projectlombok:lombok:1.18.2')
// Testing
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.neo4j:neo4j-ogm-embedded-driver:3.1.11')
testCompile('org.neo4j.test:neo4j-harness:3.4.9')
// HTTP (Requesting token for integration tests)
testCompile('junit:junit')
testCompile("com.jayway.restassured:rest-assured:$restAssuredVersion")
testCompile "org.springframework:spring-test:$springVersion"
testCompile("com.squareup.retrofit2:retrofit:$retrofitVersion")
testCompile("com.squareup.retrofit2:converter-jackson:$retrofitVersion")
}
在构建了使用Neo4J的应用程序后,它没有生成QCarEntity类,也无法绑定以实现QueryDSL提供的IgnoranceCase等功能。
任何人都可以知道是否有任何库可用于绑定Neo4j实体以及如何在进行构建时生成QCarEntity类
我已经这样尝试过了
public interface CarEntityRepository extends Neo4jRepository<CarEntity,Long>, PagingAndSortingRepository<CarEntity, Long>, QueryDslPredicateExecutor<CarEntity>, QuerydslBinderCustomizer<QCarEntity> {
@Override
default public void customize(QuerydslBindings bindings, QCarEntity root) {
bindings.bind(String.class).first(
(StringPath path, String value) -> path.likeIgnoreCase(value));
}
}
它无法构建并且无法生成QCarEntity类,如果真的生成了QCarEntit,有没有办法实现此功能?Neo4j中是否有类似的类或库
Spring数据Neo4j不支持QueryDSL。
可以在此页面的表格中检查支持的存储库功能。
您会注意到不支持QueryDslPredicateExector。
根据Gerrit Meier的说法,近期没有实施计划。
在我的@Repository接口中,我使用包含参数(addressType)的JPQL@Query创建了自定义查找方法。 在该方法中,我没有在参数上指定@Param(“addressType”)。所以我要 java.lang.IllegalArgumentException:参数绑定的名称不能为空或空!对于命名参数,您需要使用@Param查询Java版本上的方法参数 好的,这很清楚,但是我用的是J
我开始使用Neo4j和Spring Data Neo4j的项目。我希望我的程序使用已经包含我的数据的本地数据库(而不是每次启动时加载数据),因为我有很多数据需要加载到数据库中。为了实现这个目标,我尝试设置一个用我的数据填充数据库的测试用例。但是,在我的测试完成后,数据库中的数据似乎不会持久:我使用neo4j控制台/shell查看数据库,发现它是空的。 我已经构建了一个小的例子项目,也不工作。任何对
> 我在SpringJira上发现了关于使用@Version属性进行乐观锁定的问题。 在实现这一点之前,我如何使用典型的存储库模式来处理这个问题?
我目前正在从事一个利用Spring数据Neo4j的项目。每当创建节点时,我都希望创建一个包含创建日期和用户的引用审核节点。 我提出的一个解决方案是编写一个AOP方面,它与我的服务层的create方法挂钩。这对于没有级联的实体很好,但是级联的实体呢?它们没有在我的服务层中显式传递,因此我的AOP类不会拦截它们。JPA中是否有类似实体侦听器的概念,或者如何连接到该机制中?
我在OpenJFX中使用Spring JPA。这个项目是JavaFX weaver,只需在pom中添加spring启动数据jpa。 然而,我的Spring JPA的开始时间是15-20秒,在Spring初始化之前,UI不会显示。当用户启动应用程序时,每次都要花很多时间! 作为一种解决方法,我尝试创建一个没有Spring的简单java fx应用程序(在这里使用这个演示),然后从main方法开始,通过
Neo4j 2.0。0已发布。所以我更新了neo4j版本2.0。0.M6到2.0。0.0发布。并尝试在我的网站中更新模型,但出现异常。 组织。springframework。刀。DataIntegrityViolationException:唯一属性类java。lang.String rankStatId rel:false idx:true被设置为重复值3073631_99 MY SDN版本是2