标签: spring-data

如何从Spring Data存储库调用MySQL函数

我需要funtion()从一个org.springframework.data.repository将返回a的MySQL调用String.

我能够@Query在我的接口方法声明之上使用注释执行查询,但我不知道调用函数.

java mysql spring spring-data spring-boot

1
推荐指数
1
解决办法
3841
查看次数

Spring数据"行的列数据太长"

我的数据库中有3个表.FOOD_GROUP, FOOD_DESCRIPTION, SECONDARY_FOOD_DESCRIPTION,.我Application.java以正确的顺序解析数据文件,以便在表上对下一个文件有用.我的问题是,当我在SecondaryFoodDescription类中设置databankID字段时,我得到了Data truncation: Data too long for column 'food' at row 1.这是令人惊讶的(至少对我而言)因为,我使用相同的repository.save方法来填充类中的foodGroup字段.Food.

编辑:我知道通常情况下,错误Data truncation: Data too long for column 'foodid' at row 1就意味着我要插入的内容对于字段来说太大了.但是,我正在尝试插入实体.我的实体怎么可能太大了?

谁能发现我错了?

@SpringBootApplication
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
}

@Bean
public CommandLineRunner demo(FoodGroupRepository foodGrouprepository, FoodRepository foodRepository,
                              SecondaryFoodInformationRepository secondaryFoodInformationRepository,
                             ) {
    return (args) -> {

        FoodGroupParser foodGroupParser = new FoodGroupParser();
        FoodGroup foodGroup;
        Map<String, String> foodGroupMap = foodGroupParser.returnFoodGroupData();

        for (Map.Entry<String, …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data spring-boot

1
推荐指数
1
解决办法
700
查看次数

Spring Data Repository java.util.NoSuchElementException

我有一个Spring数据存储库,其中包含以下方法:

public interface ImportAssetWrapperRepository extends PagingAndSortingRepository<ImportAssetWrapper, Long> {

   ImportAssetWrapper findByAssetId(String assetId);

   List<ImportAssetWrapper> findByAssetId(String assetId, PageRequest pageRequest);
Run Code Online (Sandbox Code Playgroud)

在调用这些方法的控制器中,findAssetById(String assetId)工作正常,表明查询的结构是正确的.

尝试findAll(可分页可分页)也可以正常工作,因此存储库的Pageable方面也可以正常工作(至少对于这个默认方法).

但是,当我尝试使用List findByAssetId(String assetId,PageRequest pageRequest)时,使用:

for(ImportAssetWrapper ia : repository.findByAssetId("asset-version-123456",pr)){
        log.info("Processing new import asset: " + ia.getFilePath());
    }
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

java.util.NoSuchElementException: null
at java.util.ArrayList$Itr.next(ArrayList.java:854) ~[na:1.8.0_45]
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1042) ~[na:1.8.0_45]
at org.springframework.data.jpa.repository.query.CriteriaQueryParameterBinder.bind(CriteriaQueryParameterBinder.java:63) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:100) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.ParameterBinder.bindAndPrepare(ParameterBinder.java:160) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.ParameterBinder.bindAndPrepare(ParameterBinder.java:151) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.invokeBinding(PartTreeJpaQuery.java:218) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.createQuery(PartTreeJpaQuery.java:142) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.doCreateQuery(PartTreeJpaQuery.java:78) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.createQuery(AbstractJpaQuery.java:188) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:118) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:82) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:114) ~[spring-data-jpa-1.10.3.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:104) ~[spring-data-jpa-1.10.3.RELEASE.jar:na] …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa

1
推荐指数
1
解决办法
3551
查看次数

使用Spring Data在$ project MongoDB中进行$ filter

我有一个子文档,它是父文档的数组."设备"

在那个数组中,我有一个属性是Date属性.

我想通过确定的日期找到包含子子文档的父文档,如下所示:

{
"_id" : ObjectId("5818fa596969a1339093a7da"),
"fecha" : ISODate("2016-11-01T05:00:00.000Z"),
"spot" : "5808e3926969a126c8365c94",
"devices" : [ 
    {
        "evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
        "seenTimesCounter" : 0,
        "category" : "PRE_PASAJERO",
        "status" : "NO_CONECTADO"
    }, 
    {
        "evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
        "seenTimesCounter" : 0,
        "category" : "PRE_PASAJERO",
        "status" : "NO_CONECTADO"
    },  
    {
        "evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
        "seenTimesCounter" : 0,
        "category" : "PRE_PASAJERO",
        "status" : "NO_CONECTADO"
    }, 
    {
        "evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
        "seenTimesCounter" : 0,
        "category" : "PRE_PASAJERO",
        "status" : "NO_CONECTADO"
    }, 
    {
        "evaluationDate" : ISODate("2016-11-01T20:26:00.000Z"),
        "seenTimesCounter" : 0, …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-data spring-mongo

1
推荐指数
2
解决办法
3667
查看次数

如何在Spring Boot-1.4.1-RELEASE中创建init-sql

我正在开发一个spring boot应用程序:

使用依赖项:

    dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.4.1.RELEASE")
    compile('org.springframework.boot:spring-boot-starter-data-jpa:1.4.1.RELEASE')
    compile('mysql:mysql-connector-java:5.1.39')
}
Run Code Online (Sandbox Code Playgroud)

我想在init上运行sql:

SET NAMES 'utf8mb4'
Run Code Online (Sandbox Code Playgroud)

支持表情符号读/写

我在application.properties上进行了这些配置

spring.datasource.tomcat.init-sql=SET NAMES 'utf8mb4'
spring.datasource.init-sql=SET NAMES 'utf8mb4'
spring.datasource.connection-init-sql=SET NAMES 'utf8mb4'
Run Code Online (Sandbox Code Playgroud)

但我无法使它工作,并且在应用程序启动时没有这个日志.

spring-data spring-data-jpa spring-boot

1
推荐指数
1
解决办法
3517
查看次数

搜索嵌套对象的规范/谓词

我正在使用带有Spring JPA和Specification Executor的Spring Boot.我有我的Specification/Predicate组合成功搜索我班级中的简单属性.但是,我在搜索其中的对象时遇到困难.他们需要单独的规格吗?我有一个类,其中包含2个多对一映射类,并希望从同一个类中搜索这些字段.

谓词实施

public Specification<User> getSpecification(SpecificationField field, Object searchCriteria){
    return new Specification<User>() {
    @Override
    public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

    if(searchCriteria instanceof String){
        searchCriteria.toString().trim().toLowerCase();
    }

    switch(field){
    case USER_GROUP:    
        return cb.equal(cb.lower(root.<String> get("group").get("name")), searchCriteria);
    case USER_ROLE: 
        return cb.equal(cb.lower(root.<String> get("role").get("name")), searchCriteria);
    case USER_EMAIL: 
        return cb.equal(cb.lower(root.<String> get("email")), searchCriteria);
    case USER_FIRSTNAME: 
        return cb.equal(cb.lower(root.<String> get("firstName")), searchCriteria);
    case USER_LASTNAME: 
        return cb.equal(cb.lower(root.<String> get("lastName")), searchCriteria);
    case USER_USERNAME: 
        return cb.equal(cb.lower(root.<String> get("username")), searchCriteria);
    default:
        assert true;
        return null;
    }
Run Code Online (Sandbox Code Playgroud)

用户类

@Id
@GeneratedValue
@Column(name = "USER_ID")
private …
Run Code Online (Sandbox Code Playgroud)

java specifications jpa predicate spring-data

1
推荐指数
1
解决办法
7265
查看次数

spring-data-commons-2.0.0:找不到类型T的属性删除!ReactiveCrudRepository

问题:通过扩展ReactiveCrudRepository来尝试弹簧网以及弹簧数据.我收到以下错误:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property delete found for type Product!
        at org.springframework.data.mapping.PropertyPath.lambda$new$0(PropertyPath.java:82) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at java.util.Optional.orElseThrow(Optional.java:290) ~[na:1.8.0_101]
        at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:82) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:304) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:284) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:211) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:239) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_101]
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_101]
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_101]
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_101]
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_101]
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_101]
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_101]
        at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:240) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:368) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na]
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_101]
        at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_101]
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_101] …
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa spring-webflux

1
推荐指数
1
解决办法
1444
查看次数

如何在Rest资源Spring Data Rest中将Export的默认值设置为false

我想使用spring数据rest的RestResource注释。如您所知,它默认情况下公开所有CRUD方法。但是我只需要findAll方法。一种方法是将所有其他方法的导出值设置为false,如下所示:

@RestResource(path="questions")
public interface QuestionRepository extends CRUDRepository<Question,Long> {

@RestResource(exported = false)
void delete(Long id);

@RestResource(exported = false)
void create(Question q);
....
}
Run Code Online (Sandbox Code Playgroud)

但是我不喜欢这样。还有其他更简单的方法可以避免这种冶金吗?

java rest spring spring-data

1
推荐指数
1
解决办法
1720
查看次数

如何在JPQL(Spring JPA查询)中使用JOIN进行UPDATE语句?

这是SQL中的JOIN问题更新语句的扩展,但是我尝试使用Spring Data JPQL。

我正在尝试将更新与JPQL中的JOIN一起使用,如下所示

@Modifying
@Query("UPDATE TotalValue tv JOIN LineItems li WHERE li.totalValue.totalValueId=:totalValuedId SET tv.totalAmount =sum(li.itemTotalValue) ")
void calculateTotalAmount(@Param("totalValuedId") Long totalValuedId);
Run Code Online (Sandbox Code Playgroud)

但是,我得到如下错误

org.hibernate.hql.internal.ast.QuerySyntaxException:期望“设置”,找到“ JOIN”

JPQL中无法进行UPDATE和JOIN吗?有什么选择。谢谢

java hibernate jpa jpql spring-data

1
推荐指数
1
解决办法
3143
查看次数

JpaRepository:获取特定的惰性集合

如果我有一个实体Person与一些懒惰的集合(CarsBillsFriends,...),并希望写一个JpaRepository法,让我所有的人indluding预先抓取Cars,这可能吗?

我知道一个人可以在单个对象上执行此操作,但是以某种方式收集人员是否可以做到这一点?

spring jpa spring-data spring-data-jpa

1
推荐指数
1
解决办法
938
查看次数