質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

5530閲覧

spring jpaのjpqlのエラー

isacRu

総合スコア64

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2016/09/16 05:36

編集2016/09/16 07:44

【状況】
ユーザのJpaRepositoryインターフェースに宣言したJPQLを使用したら、意味不明のエラーがでてしまって困っています。

Userエンティティクラス

Java

1 2import java.util.Date; 3import java.util.List; 4 5import javax.persistence.*; 6 7import lombok.Getter; 8import lombok.Setter; 9import lombok.ToString; 10 11@Getter 12@Setter 13@ToString 14@Entity 15@Table(name = "m_user") 16public class User { 17 18 @Id 19 @GeneratedValue(strategy = GenerationType.AUTO) 20 private Long id; 21 private String username; 22 private Date create_at; 23 private Date update_at; 24 25 @Transient 26 private List<MinutesKind> minutesKind; 27 28 @Transient 29 private List<Authority> authority; 30 31 public User() { 32 } 33 34 public User(List<MinutesKind> minutesKind) { 35 this.minutesKind = minutesKind; 36 } 37 38 public User(List<MinutesKind> minutesKind,List<Authority> authority) { 39 this.minutesKind = minutesKind; 40 this.authority = authority; 41 } 42} 43

UserRepositoryインターフェース

JAVA

1import org.springframework.data.jpa.repository.JpaRepository; 2import org.springframework.data.jpa.repository.Query; 3 4import com.jpa.test.model.User; 5 6public interface UserRepository extends JpaRepository<User, Long> { 7 User findByUsername(String username); 8 9 @Query(value = "insert into m_user(username) values(?1)",nativeQuery=true) 10 void insertUser(String username); 11} 12

ユーザ作成のControllerクラス

JAVA

1import org.springframework.beans.factory.annotation.Autowired; 2import org.springframework.stereotype.Controller; 3import org.springframework.ui.Model; 4import org.springframework.web.bind.annotation.ModelAttribute; 5import org.springframework.web.bind.annotation.RequestMapping; 6import org.springframework.web.bind.annotation.RequestMethod; 7 8import com.jpa.test.model.User; 9import com.jpa.test.repository.UserRepository; 10 11@Controller 12public class UserController { 13 14 @Autowired 15 private UserRepository userRepository; 16 17 @RequestMapping(value = "/userCreate", method = RequestMethod.GET) 18 public String getInput(Model model) { 19 20 User user = new User(); 21 model.addAttribute(user); 22 return "userCreate"; 23 } 24 25 @RequestMapping(value = "/userCreate", method = RequestMethod.POST) 26 public String postInput(@ModelAttribute User user) { 27 28 userRepository.insertUser(user.getUsername()); 29 return "redirect:/userCreate"; 30 } 31}

以上を踏まえて「ResultSetを抽出することができませんでした」や「executeQuery()とデータ操作文を発行することはできません」といったエラーがでてしまいます。なぜなのかが疑問で困っています。なぜクエリーが実行できていないのかわかる方また、解決策がある方教えて下さい。以上、宜しくお願い致します。

※通常ならばこの場合、userRepository.save(モデル名)で簡単にinsertできますが、ある特定のプロパティを保存したい場合はどうすれば良いのかと思った。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

なんとか解決した。UserRepositoryインタフェースのところに注釈@Modifying@Transactionalを追加すればいけた。

java

1import javax.transaction.Transactional; 2 3import org.springframework.data.jpa.repository.JpaRepository; 4import org.springframework.data.jpa.repository.Modifying; 5import org.springframework.data.jpa.repository.Query; 6import org.springframework.stereotype.Repository; 7 8import com.jpa.test.model.User; 9 10@Repository 11public interface UserRepository extends JpaRepository<User, Long> { 12 User findByUsername(String username); 13 14 @Modifying 15 @Transactional 16 @Query(value = "insert into m_user(username) values(?1)",nativeQuery=true) 17 void insertUser(String username); 18} 19

参考サイト

投稿2016/09/16 07:33

編集2016/09/16 07:35
isacRu

総合スコア64

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問