2017-11-18 121 views
0

我有说运行时错误(并略去了完整的目录:我的模型和界面有什么问题? (Java的春季启动Web应用程序)

错误创建名称为豆“idea_Service”文件 定义[... COM \ vincentsnow \ brightideas \ SERVICES \ Idea_Service.class]: 不满意的依赖,通过构造函数的参数0表示; 嵌套的例外是 org.springframework.beans.factory.BeanCreationException:错误 创建名称为豆 'idea_Repository':失败init方法 的调用;嵌套异常是java.lang.IllegalArgumentException:不是 受管理的类型:class java.lang.Object继承

和另:

错误与名制作豆 'idea_Repository':初始化 方法的调用失败;嵌套的例外是java.lang.IllegalArgumentException异常: 不是托管类型:类java.lang.Object

我没有任何地方使用这些小写名称。我无法理解此消息......我猜测它正在尝试编译,但出于某种原因更改文件名。 STS在我的文件中没有发现错误。在这里,他们是:

Idea_Service.java(服务)

package com.vincentsnow.brightideas.services; 

import java.util.List; 
import org.springframework.stereotype.Service; 
import com.vincentsnow.brightideas.models.Idea; 
import com.vincentsnow.brightideas.models.User; 
import com.vincentsnow.brightideas.repositories.Idea_Repository; 

@Service 
public class Idea_Service { 
    private Idea_Repository ideaRepository; 
    public Idea_Service(Idea_Repository ideaRepository){ 
     this.ideaRepository = ideaRepository; 
    } 

    public List<Idea> allIdeas(){ 
     return ideaRepository.findAllIdeas(); 
    } 

    public void createUser(String idea, User posted_by){ 
     ideaRepository.save(idea, posted_by); 
    } 

    public Idea oneIdea(Long id) { 
     return ideaRepository.getSingleIdeaWhereId(id); 
    } 

    public List<Idea> likesof(Long id){ 
     return ideaRepository.getLikesOfIdea(id); 
    } 
} 

Idea.java(模型)

package com.vincentsnow.brightideas.models; 

import java.util.List; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.JoinTable; 
import javax.persistence.ManyToMany; 
import javax.persistence.ManyToOne; 
import javax.validation.constraints.Size; 
import com.vincentsnow.brightideas.models.User; 

@Entity 
public class Idea { 

     @Id 
     @GeneratedValue 
     private Long id; 

     @Column 
     @Size(min=3, max=5000) 
     private String idea; 

     @ManyToOne(fetch = FetchType.LAZY) 
     @JoinColumn(name="idea_id") 
     private User posted_by; 

     @ManyToMany(fetch = FetchType.LAZY) 
     @JoinTable(
      name = "likes", 
      joinColumns = @JoinColumn(name = "idea_id"), 
      inverseJoinColumns = @JoinColumn(name = "user_id") 
      ) 
      private List<Idea> likes; 


} 

Idea_Repository.java(库)

package com.vincentsnow.brightideas.repositories; 

import java.util.List; 
import org.springframework.data.jpa.repository.Query; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 
import com.vincentsnow.brightideas.models.Idea; 
import com.vincentsnow.brightideas.models.User; 

@Repository 
public interface Idea_Repository extends CrudRepository { 

    @Query("SELECT a FROM ideas a") 
    List<Idea> findAllIdeas(); 

    @Query(value="INSERT INTO ideas (idea, posted_by) VALUES (?1, ?2, ?3, ?4)", nativeQuery=true) 
    Idea save(String idea, User posted_by); 

    @Query("SELECT a FROM ideas a WHERE id=?1") 
    Idea getSingleIdeaWhereId(Long id); 

    @Query(value="SELECT likes WHERE idea_id = ?1", nativeQuery=true) 
    List<Idea> getLikesOfIdea(Long id); 

} 

什么是错的跟他们?这个错误是什么意思? STS试图做什么?

+0

请显示persistence.xml文件 – Rinat

+0

你好像在Idea_Service.java下粘贴了Idea.java – vandale

+0

啊,所以我有!编辑,谢谢。 –

回答

2

CrudRepository需要两个形式参数,即它管理的类型和该类型ID的类型。由于您没有提供这些参数,因此它们实际上是ObjectObject:错误消息指出Object不是可管理的对象(未用@Entity注释)。你需要告诉Spring Data,你的版本库实际上试图管理的类是Idea。尝试:

public interface Idea_Repository extends CrudRepository<Idea, Long> { 
    // .. 
} 

而且,你不需要findAllIdeassavegetSingleIdeaWhereId; Spring Data JPA免费提供等价的方法。

相关问题