私は使用しようとしています... ContainingIgnoreCase JPAクエリーを使用して、profile(id)、profile_interest(profile_idとinterest_id)、interest(id)という3つの関連オブジェクトから情報を抽出します。私のサービスでContainingIgnoreCase Hibernate JPAエラー
私は パブリッククラスSearchService @Service
呼び出す{
@Autowired
private ProfileDao profileDao;
public List<SearchResult> search(String text) {
return profileDao.findByInterestsNameContainingIgnoreCase(text).stream().map(SearchResult::new).collect(Collectors.toList());
}
}
はその後、私のDAOはそれを実行します。
ブロックを
package music.bolo.domain.entity; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.OneToOne; import javax.persistence.OrderColumn; import javax.persistence.Table; import org.owasp.html.PolicyFactory; import music.bolo.domain.dto.FileInfo; @Entity @Table(name = "profile") public class Profile { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id") private long id; @OneToOne(targetEntity = Usuario.class) @JoinColumn(name = "user_id", nullable = false) private Usuario usuario; @Column(name = "about", length = 5000) private String about; @Column(name = "photo_directory", length = 10) private String photoDirectory; @Column(name = "photo_name", length = 10) private String photoName; @Column(name = "phot_extension", length = 5) private String photoExtension; @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "profile_interests", joinColumns = { @JoinColumn(name = "profile_id") }, inverseJoinColumns = { @JoinColumn(name = "interest_id") }) @OrderColumn(name = "display_order") private Set<Interest> interests; public Profile() { } public Profile(Usuario usuario) { this.usuario = usuario; } public long getId() { return id; } public void setId(long id) { this.id = id; } public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } public String getAbout() { return about; } public void setAbout(String about) { this.about = about; } public String getPhotoDirectory() { return photoDirectory; } public void setPhotoDirectory(String photoDirectory) { this.photoDirectory = photoDirectory; } public String getPhotoName() { return photoName; } public void setPhotoName(String photoName) { this.photoName = photoName; } public String getPhotoExtension() { return photoExtension; } public void setPhotoExtension(String photoExtension) { this.photoExtension = photoExtension; } // Create a profile that is suitable for displaying via JSP public void safeCopyFrom(Profile other) { if (other.about != null) { this.about = other.about; } if (other.interests != null) { this.interests = other.interests; } } // Create a profile sanitized for saving public void safeMergeFrom(Profile webProfile, PolicyFactory htmlPolicy) { if (webProfile.about != null) { this.about = htmlPolicy.sanitize(webProfile.about); } } public void setPhotoDetails(FileInfo info) { photoDirectory = info.getSubDirectory(); photoExtension = info.getExtension(); photoName = info.getBasename(); } public Path getPhoto(String baseDirectory) { if (photoName == null) { return null; } return Paths.get(baseDirectory, photoDirectory, photoName + "." + photoExtension); } public Set<Interest> getInterests() { return interests; } public void setInterests(Set<Interest> interests) { this.interests = interests; } public void addInterest(Interest interest) { interests.add(interest); } public void removeInterest(String interestName) { interests.remove(new Interest(interestName)); } @Override public String toString() { return "Profile [id=" + id + ", usuario=" + usuario + ", about=" + about + ", photoDirectory=" + photoDirectory + ", photoName=" + photoName + ", photoExtension=" + photoExtension + ", interests=" + interests + "]"; } }
しかし...私はこれを取得:ProfileDaoはCrudRepository {
Profile findByUsuario(Usuario usuario);
List<Profile> findByInterestsNameContainingIgnoreCase(String text);
}
マイプロファイルオブジェクトを拡張@Repository引用 公開インタフェースエラー
2017年1月24日22:06:38.357 INFO 4656 --- [restartedMain] j.LocalContainerEntityManagerFactoryBean:永続ユニット 'デフォルト' のためのJPAのEntityManagerFactoryを閉じる 2017年1月24日22:06:38.389 INFO 4656 - - [restartedMain] o.apache.catalina.core.StandardService:サービスTomcatを停止する 2017-01-24 22:06:38.404 WARN 4656 --- [ost-startStop-1] oacloader.WebappClassLoaderBase:Webアプリケーション[ROOT ]が[Abandoned connection cleanup thread]という名前のスレッドを開始したように見えますが、停止に失敗しました。これはメモリリークを引き起こす可能性が非常に高いです。スレッドのスタックトレース: java.lang.Object.wait(ネイティブメソッド) java.lang.ref.ReferenceQueue.remove(不明なソース) com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43) 2017 -01-24 22:06:38.420 ERROR 4656 --- [restartedMain] osboot.SpringApplication:アプリケーションの起動に失敗しました。
org.springframework.beans.factory.BeanCreationException:名前が 'indexController'のBeanを作成中にエラーが発生しました: autowired依存関係は失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドをautowireできませんでした:private music.bolo.services.ProfileService music.bolo.controllers.IndexController.profileService;ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです: 'profileService'という名前のBeanを作成中にエラーが発生しました:autowired依存関係の注入が失敗しました。入れ子にされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:フィールドをautowireできませんでした:music.bolo.domain.repository.ProfileDao music.bolo.services.ProfileService.profileDao;ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです: 'profileDao'という名前のBeanを作成中にエラーが発生しました:initメソッドの呼び出しに失敗しました。入れ子にされた例外はjava.lang.IllegalStateExceptionです:パス型を間接参照しようとする試みが間違っています の基本型のパス・ソースを無効にしようとしました。 -4.2.4.RELEASE.jar:4.2.4。RELEASE]
があなたのプロフィールのマッピングファイルを追加する拡張
パブリックインターフェイス。完全なスタックトレースもありますか? –