ネストされた例外はjava.lang.ClassCastExceptionです:java.lang.Stringをキャストできません

ジャケット

私はspring-dataを初めて使用します。このエラーが発生しjava.lang.String cannot be cast to com.example.accessingdatamysql.User、修正方法がわかりません。コードのさまざまな関連部分を追加します。

このメソッドは、最も古いエントリを(タイムスタンプを介して)名前で出力する必要があります。

Main.Controller

package com.example.accessingdatamysql;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller 
@RequestMapping(path="/demo") 
public class MainController {
  @Autowired 
         
  private UserRepository userRepository;

  @Transactional
  @PostMapping(path="/add")
  public @ResponseBody String addNewUser (@RequestParam String name,
          @RequestParam String email,@RequestParam String surname) 
  {
      User n = new User();
      n.setName(name);
      n.setSurname(surname);
      n.setEmail(email);
      userRepository.create(n);
      return "Saved";
  }

  @GetMapping(path="first")
  User one(@RequestParam String name) {
      return userRepository.findFirstByName(name);
  }
}  

User.java

package com.example.accessingdatamysql;

import java.sql.Timestamp;
import java.time.Instant;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity 
public class  User {
  @Id
  @GeneratedValue(strategy=GenerationType.AUTO)
  private Integer id;
 
  public String name;

  private String email;
  
  private String surname;
  
  @Column(name="stmp", columnDefinition = "TIMESTAMP (6)")
  Timestamp timestamp = Timestamp.from(Instant.now());

  public void setTimestamp(Timestamp timestamp) {
      this.timestamp = timestamp;
  }

  public Timestamp getTimestamp() {
      return timestamp;
  }

  public String getSurname() {
      return surname;
  }
 
  public void setSurname(String surname) {
      this.surname = surname;
  }
 
  public Integer getId() {
      return id;
  }

  public void setId(Integer id) {
      this.id = id;
  }

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public String getEmail() {
      return email;
  }

  public void setEmail(String email) {
      this.email = email;
  }
}

RepoImpl.java

package com.example.accessingdatamysql;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import org.springframework.stereotype.Component;

@Component
public class UserRepositoryImpl implements UserRepository {
    
    private final EntityManager em;
    
    public UserRepositoryImpl(EntityManager entityManager) {
        this.em = entityManager;
    }

    @Override
    public User findFirstByName(String name) {
        CriteriaBuilder builder = em.getCriteriaBuilder();
        CriteriaQuery<User> criteria = builder.createQuery(User.class);
        Root<User> root = criteria.from(User.class);
        criteria.select(root.get("name"));
        criteria.orderBy(builder.asc(root.get("timestamp")));
        TypedQuery<User> query = em.createQuery(criteria).setMaxResults(1);
        return query.getSingleResult();
    }
    
    @Override
//  per la creazione//
    public void create(User entity) {
        em.persist(entity); 
    }   
}

エラー

 [Request processing failed; nested exception is java.lang.ClassCastException: java.lang.String cannot be cast to com.example.accessingdatamysql.User] with root cause
java.lang.ClassCastException: java.lang.String cannot be cast to com.example.accessingdatamysql.User
        at com.example.accessingdatamysql.UserRepositoryImpl.findFirstByName(UserRepositoryImpl.java:35) ~[classes!/:0.0.1-SNAPSHOT]
アレックス・ルデンコ

あなたが見つけることを意図した場合User、名前で、あなたはいないでフィルタパラメータを設定しておく必要がありますcriteria.selectが、中にcriteria.where

public User findFirstByName(String name) {
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<User> criteria = builder.createQuery(User.class);
    Root<User> root = criteria.from(User.class); // root is User
    criteria.select(root).where(builder.equal(root.get("name"), name));
    criteria.orderBy(builder.asc(root.get("timestamp")));
    TypedQuery<User> query = em.createQuery(criteria).setMaxResults(1);
    return query.getSingleResult();
}

しながらは、criteria.select(root.get("name"));列のみがあることを意味"name"最初のユーザーの名前が返されるべきである、選択されて戻されます。

このような情報が必要な場合は、次の方法で取得できます。

public String findFirstUserName() {
    CriteriaBuilder builder = em.getCriteriaBuilder();
    CriteriaQuery<String> criteria = builder.createQuery(String.class);
    Root<User> root = criteria.from(User.class); // root is User
    criteria.select(root.get("name"));  // getting name 
    criteria.orderBy(builder.asc(root.get("timestamp"))); // of the first/earliest user 
    TypedQuery<String> query = em.createQuery(criteria).setMaxResults(1);
    return query.getSingleResult();
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

java.lang.ClassCastException:Zをjava.lang.Stringにキャストできません

分類Dev

java.lang.RuntimeException:java.lang.ClassCastException:java.lang.Longをjava.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:[Bはjava.lang.Stringにキャストできません

分類Dev

ClassCastExceptionを解決する方法:java.lang.StringはAndroidで例外をキャストできません

分類Dev

ClassCastExceptionを解決する方法:java.lang.Stringは例外をキャストできません

分類Dev

java.lang.ClassCastException:[B> java.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:java.lang.Stringをjava.lang.Doubleにキャストできません

分類Dev

java.lang.ClassCastException:java.lang.Doubleをjava.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:java.lang.Stringをtableauのjava.lang.Integerにキャストできませんか?

分類Dev

java.lang.ClassCastException:java.lang.Object []をにキャストできません

分類Dev

ClassCastException:JSONArrayをjava.lang.String []にキャストできません

分類Dev

java.lang.ClassCastException:java 1.6では、java.lang.Longをjava.lang.Integerにキャストできません

分類Dev

java.lang.ClassCastException:クラスjava.sql.Dateをjava.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:[Ljava.lang.String; java.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:JackcessでTable.addRow()を使用して、java.lang.Stringをjava.lang.Booleanにキャストすることはできません。

分類Dev

ClassCastException:java.lang.Object []をjava.lang.String [] androidにキャストできません

分類Dev

AsyncTask:ClassCastException:java.lang.Object []をjava.lang.String []にキャストできません

分類Dev

java.lang.ClassCastException:org.apache.avro.generic.GenericData $ Recordをjava.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:com.model.Imageをjava.lang.Stringにキャストできません

分類Dev

java.lang.ClassCastException:java.lang.Stringをcom.parse.ParseUserにキャストできません

分類Dev

java.lang.ClassCastException:[java.lang.Integerにキャストできません

分類Dev

SpringMVC-ネストされた例外はjava.lang.NullPointerExceptionです

分類Dev

RDD [LabeledPoint]の作成:java.lang.ClassCastException:java.lang.Longをjava.lang.Doubleにキャストできません

分類Dev

Kotlin:java.lang.ClassCastException:java.lang.Longをjava.lang.Integerにキャストできません

分類Dev

java.lang.ClassCastException:java.lang.Integerをjava.lang.Doubleにキャストできません

分類Dev

Hibernate:java.lang.ClassCastException:java.lang.Integerをjava.lang.Doubleにキャストできません

分類Dev

原因:java.lang.ClassCastException:java.lang.Classをjava.lang.reflect.ParameterizedTypeにキャストできません

分類Dev

java.lang.ClassCastException:[Ljava.lang.Object; [Ljava.lang.String;にキャストできません。

分類Dev

messageConverter.fromMessage()が配列リストを変換しないのはなぜですか?java.lang.ClassCastException:java.lang.Stringをキャストできません

Related 関連記事

  1. 1

    java.lang.ClassCastException:Zをjava.lang.Stringにキャストできません

  2. 2

    java.lang.RuntimeException:java.lang.ClassCastException:java.lang.Longをjava.lang.Stringにキャストできません

  3. 3

    java.lang.ClassCastException:[Bはjava.lang.Stringにキャストできません

  4. 4

    ClassCastExceptionを解決する方法:java.lang.StringはAndroidで例外をキャストできません

  5. 5

    ClassCastExceptionを解決する方法:java.lang.Stringは例外をキャストできません

  6. 6

    java.lang.ClassCastException:[B> java.lang.Stringにキャストできません

  7. 7

    java.lang.ClassCastException:java.lang.Stringをjava.lang.Doubleにキャストできません

  8. 8

    java.lang.ClassCastException:java.lang.Doubleをjava.lang.Stringにキャストできません

  9. 9

    java.lang.ClassCastException:java.lang.Stringをtableauのjava.lang.Integerにキャストできませんか?

  10. 10

    java.lang.ClassCastException:java.lang.Object []をにキャストできません

  11. 11

    ClassCastException:JSONArrayをjava.lang.String []にキャストできません

  12. 12

    java.lang.ClassCastException:java 1.6では、java.lang.Longをjava.lang.Integerにキャストできません

  13. 13

    java.lang.ClassCastException:クラスjava.sql.Dateをjava.lang.Stringにキャストできません

  14. 14

    java.lang.ClassCastException:[Ljava.lang.String; java.lang.Stringにキャストできません

  15. 15

    java.lang.ClassCastException:JackcessでTable.addRow()を使用して、java.lang.Stringをjava.lang.Booleanにキャストすることはできません。

  16. 16

    ClassCastException:java.lang.Object []をjava.lang.String [] androidにキャストできません

  17. 17

    AsyncTask:ClassCastException:java.lang.Object []をjava.lang.String []にキャストできません

  18. 18

    java.lang.ClassCastException:org.apache.avro.generic.GenericData $ Recordをjava.lang.Stringにキャストできません

  19. 19

    java.lang.ClassCastException:com.model.Imageをjava.lang.Stringにキャストできません

  20. 20

    java.lang.ClassCastException:java.lang.Stringをcom.parse.ParseUserにキャストできません

  21. 21

    java.lang.ClassCastException:[java.lang.Integerにキャストできません

  22. 22

    SpringMVC-ネストされた例外はjava.lang.NullPointerExceptionです

  23. 23

    RDD [LabeledPoint]の作成:java.lang.ClassCastException:java.lang.Longをjava.lang.Doubleにキャストできません

  24. 24

    Kotlin:java.lang.ClassCastException:java.lang.Longをjava.lang.Integerにキャストできません

  25. 25

    java.lang.ClassCastException:java.lang.Integerをjava.lang.Doubleにキャストできません

  26. 26

    Hibernate:java.lang.ClassCastException:java.lang.Integerをjava.lang.Doubleにキャストできません

  27. 27

    原因:java.lang.ClassCastException:java.lang.Classをjava.lang.reflect.ParameterizedTypeにキャストできません

  28. 28

    java.lang.ClassCastException:[Ljava.lang.Object; [Ljava.lang.String;にキャストできません。

  29. 29

    messageConverter.fromMessage()が配列リストを変換しないのはなぜですか?java.lang.ClassCastException:java.lang.Stringをキャストできません

ホットタグ

アーカイブ