如何解决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吗?还是重命名类是解决它的唯一方法?
解决方法
即使一个实体位于两个不同的程序包中,也无法为一个项目的两个不同实体使用重复的名称。
实体名称必须唯一。当不同包中的两个实体类共享相同的类名时,需要进行显式的实体名设置,以避免冲突
,只需重命名该类,我认为您不能使用两个具有相同名称的类(实体)。尝试重命名,然后再次调用,应该可以:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。