我的模型和界面有什么问题? (Java的春季启动Web应用程序)
我有说运行时错误(并略去了完整的目录:我的模型和界面有什么问题? (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试图做什么?
CrudRepository
需要两个形式参数,即它管理的类型和该类型ID的类型。由于您没有提供这些参数,因此它们实际上是Object
和Object
:错误消息指出Object
不是可管理的对象(未用@Entity
注释)。你需要告诉Spring Data,你的版本库实际上试图管理的类是Idea
。尝试:
public interface Idea_Repository extends CrudRepository<Idea, Long> {
// ..
}
而且,你不需要findAllIdeas
,save
或getSingleIdeaWhereId
; Spring Data JPA免费提供等价的方法。
请显示persistence.xml文件 – Rinat
你好像在Idea_Service.java下粘贴了Idea.java – vandale
啊,所以我有!编辑,谢谢。 –