在不同的包中有两个具有相同简单名称的实体,引用相同的表名但不同的方案(物理上不同的表)。代码编译时没有错误。如果未触发这些表的行为,则正确执行。但是错误
org.hibernate.QueryException: could not resolve property description
在调用存储库中的主数据时发生。
问题:
-
文档中描述的案例在哪里?
-
是否有排除实体类重命名的解决方法?
第一个实体:package home,表位于默认架构下(在实体管理器中指定):
package com.example.domain.home;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;
@Entity
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@Id
public String id;
public String description;
}
第二个实体:包工作,相同的简单名称,相同的表名称,但不同的模式:
package com.example.domain.work;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "DATA", schema = "WORK")
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@Id
public String id;
}
要从主页查找数据的存储库:
package com.example.domain.home;
import org.springframework.data.jpa.repository.JpaRepository;
public interface DataRepository extends JpaRepository<Data, Long> {
Data findTopByDescription(String description);
}
package com.example.domain.work;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository("workDataRepository")
public interface DataRepository extends JpaRepository<Data, Long> {
}
使用其中一个存储库:
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.domain.home.DataRepository;
@Service
public class HomeService {
@Autowired
private DataRepository dataRepository;
public void test(){
dataRepository.findTopByDescription("Test");
}
}
在spring数据或hibernate文档中未找到任何相关信息。
如果有任何其他有用的信息,请留下评论。