微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Data Repository使用相同的Entity类名称,但使用不同的包

如何解决Spring Data Repository使用相同的Entity类名称,但使用不同的包

我有两个名称相同的实体类,但是它们在不同的程序包中,并且具有不同的ID。

package sample.visa;

@Entity
@Table(name="APP_VISA")
public class Application
{
    @Id
    private Integer id;
    ...
}

package sample.student;

@Entity
@Table(name="APP_STU")
public class Application
{
    @Id
    private String studentId;
    ...
}

然后,我有一个Spring Data存储库,可从实体类之一中检索。

package sample.student;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ApplicationRepository extends CrudRepository<sample.student.Application,String>
{   
}

当我尝试在注入的存储库中调用find方法(例如findById)时,我认为它应该已经查询数据库表APP_STU。但是,它实际上查询了APP_VISA并返回了以下错误消息。

java.lang.IllegalArgumentException: org.hibernate.QueryException: Could not resolve property: studentId of: sample.visa.Application

有什么方法可以将存储库定位为APP_STU吗?还是重命名类是解决它的唯一方法

解决方法

即使一个实体位于两个不同的程序包中,也无法为一个项目的两个不同实体使用重复的名称。

实体名称必须唯一。当不同包中的两个实体类共享相同的类名时,需要进行显式的实体名设置,以避免冲突

Reference

,

只需重命名该类,我认为您不能使用两个具有相同名称的类(实体)。尝试重命名,然后再次调用,应该可以:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。