spring-data - 为什么扩展 2 个其他 repo 接口的 repo 接口没有连接到控制器中?
问题描述
我尝试按照此处描述的文档进行操作,但它似乎不起作用,因为我收到此错误:
创建名为“memberRepository”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not a managed type: class com.timewin.application.model.Member
这是成员类:
public class Member {
private String name;
private List<Activity> activities = new ArrayList<>();
public Member() {
}
public Member(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public List<Activity> getActivities() {
return activities;
}
public void setActivities(Activity activity) {
getActivities().add(activity);
System.out.println("Member: 'activities' of " + this.getName() + " was set to " + activity.getType());
activity.update(this);
}
}
这些是存储库接口和实现:
@Repository
public interface MemberRepository extends JpaRepository<Member, Float>, MemberRepositoryCustom{
}
public interface MemberRepositoryCustom {
public void createMember(String memberName);
public void addActivityToMember(Activity activity, String member);
public void addMemberToActivity(String member, Activity activity);
}
@Repository
public class MemberRepositoryImpl implements MemberRepositoryCustom{
//implementation here
}
我尝试MemberRepository
在控制器中自动连接:
@Autowired
MemberRepository memberRepository;
解决方案
JpaRepository
应该使用托管实体的类进行操作,因此如果一个Member
类是某个 DB 表的反映member
,那么您必须使用@Entity
and注释它@Table
(就像一个Activity
类)
@Entity
@Table(name = "member")
public class Member {
@Column(name="name")
private String name;
@JoinColumn(name = "...", referencedColumnName="...")
@OneToMany(...)
private List<Activity> activities;
}
这是一个很好的参考如何使用实体而且您必须调整配置才能使用此功能:
@Configuration
/****/
@EnableJpaRepositories("com.timewin.application.repository")
@EntityScan("com.timewin.application.model")
/***/
public class AppConfig /**some extends***/{
}
顺便说一句,我认为该名称model
不是包含实体的包的最佳选择,因为该名称通常用于保存一些中间/DTO/输入输出 POJO
推荐阅读
- php - 如何使用 symfony 3.4 在 ExceptionController 中获取翻译器对象
- python - 使用 selenium python web 驱动程序从角度单击表中的所有行
- appium - 在字段上输入文本的替代方法
- bash - 在单个命令中获取令牌
- html - CSS 格式问题,div 相互移动,div 不居中
- image-processing - 尝试在 PNG 周围添加笔画,可以改进吗?
- forms - 我无法恢复控制器中复选框的值
- c++ - 在标准布局对象(例如,使用 offsetof)中进行指针运算时,我们是否需要使用 std::launder?
- android - Google 街景应用(不是 Google 地图)的 URL 方案或意图
- python - 如何验证时间窗口之间是否存在重叠