@Query(value = "SELECT * FROM PROFILE INNER JOIN FAVORITE ON PROFILE.USER_ID = FAVORITE.FAVORITE_USER_ID WHERE FAVORITE.USER_ID = ? ", nativeQuery = true)
この文をJPQLで表すとどんな書き方になるのでしょうか??
@Query("SELECT x FROM Profile x JOIN Favorite f on x.id = f.favoriteUserId where f.userId = ?1")
だと
Path expected for join!
のエラーが出てしまいます。
Profile
java
1//profileテーブルとマッピングさせるエンティティクラス 2 3package com.example.konkatsu.domain; 4 5import java.sql.Date; 6 7import javax.persistence.Column; 8import javax.persistence.Entity; 9import javax.persistence.FetchType; 10import javax.persistence.Id; 11import javax.persistence.JoinColumn; 12import javax.persistence.ManyToOne; 13import javax.persistence.Table; 14 15import lombok.AllArgsConstructor; 16import lombok.Data; 17import lombok.NoArgsConstructor; 18 19@Data 20@NoArgsConstructor //デフォルトコンストラクタも必要な場合 21@AllArgsConstructor //すべてのフィールドを引数に持つコンストラクタを自動生成 22@Entity //エンティティ(一単位として扱われるデータのまとまり)であることを示す。指定したクラス名がテーブルとマッピングされる 23@Table(name = "profile") //接続するテーブルを指定 24public class Profile { 25 //@Autowired 26 //ProfileForm form; 27 28 @Column(name = "user_id") 29 @Id //主キー 30 private Integer id; 31 private String name; 32 private Integer genderId; 33 private Date birthday; 34 private Integer height; 35 private Integer occupationId; 36 private Integer income; 37 private String text; 38 private byte[] image; 39 40 @ManyToOne(fetch = FetchType.LAZY) //@ManyToOneで多対1の関係にする 41 @JoinColumn(nullable = true, name = "user_id", insertable=false, updatable=false) //外部キーのカラム名の指定 42 private User user; 43 44 @ManyToOne(fetch = FetchType.LAZY) //@ManyToOneで多対1の関係にする 45 @JoinColumn(nullable = true, name = "genderId", insertable=false, updatable=false) //外部キーのカラム名の指定 46 private Gender gender; 47 48 @ManyToOne(fetch = FetchType.LAZY) 49 50}
Favorite
java
1package com.example.konkatsu.domain; 2 3import javax.persistence.Column; 4import javax.persistence.Entity; 5import javax.persistence.FetchType; 6import javax.persistence.Id; 7import javax.persistence.IdClass; 8import javax.persistence.JoinColumn; 9import javax.persistence.ManyToOne; 10import javax.persistence.Table; 11 12import lombok.AllArgsConstructor; 13import lombok.Data; 14import lombok.NoArgsConstructor; 15 16@Data 17@NoArgsConstructor 18@AllArgsConstructor 19@Entity 20@Table(name = "favorite") 21@IdClass(value=FavoriteKeyId.class) //複合主キーを扱いたい場合、別途キーをまとめたクラスを作成する必要がある 22 23public class Favorite { 24 25 @Id 26 @Column(name = "user_id") 27 private Integer userId; 28 29 @Id 30 @Column(name = "favorite_user_id") 31 private Integer favoriteUserId; 32 33}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/02 10:00