【发布时间】:2019-05-28 11:51:21
【问题描述】:
我正在尝试从两个数据库表中获取单个数据。这些表没有外键,也没有可连接的。我正在使用 spring-data 来检索第一个数据集所需的数据。
我有两个具有公共字符串值的数据集,并且想要从两个表中检索数据而不使用可连接或外键,从第一个数据集中检索数据。
我正在使用简单的 DataRepository 接口
import org.springframework.data.jpa.repository.JpaRepository;
public interface DataRepository extends JpaRepository<FirstData, Long> {
DataService getById(Long id);
}
FirstData 实体:
@Data
@Entity
@Table(schema = "someschema", name = "firstdata")
public class FirstData {
@Id
@Column(name = "id")
private Long uuid;
@Column(name = "name")
private String name;
@Column(name = "type")
private String type;
}
SecondData 实体:
@Data
@Entity
@Table(schema = "someschema", name = "seconddata")
public class SecondData {
@Id
@Column(name = "id")
private Long uuid;
@Column(name = "type")
private String type;
@Column(name = "value")
private String value;
}
和数据服务
@Service
public class DataService {
private DataRepository dataRepository;
public DataService(DataRepository dataRepository){
this.dataRepository = dataRepository;
}
public void getBothFirstAndSecondData() {
List<FirstData> firstDataSet = dataRepository.findAll();
}
}
我需要从两个表中获取数据,但不想修改表结构、使可连接或添加外键。另外,我不想在第二个数据集周围添加另一个存储库编写代码。我只需要在第一个数据集结果中从第二个数据集中获得一个“值”。解决此类数据检索的最简单方法是什么?
【问题讨论】:
-
创建两个单独的实体和单独的存储库。从服务中的两个repo中获取数据,并编写与它们之间的公共字符串匹配的逻辑。
-
您发布了两个同名课程 -
DictService。您引用了一个没有代码的类FirstData。你的问题目前没有意义。 -
是的,抱歉,只是打错了类名。我设法找到了简单的解决方案:在 FirstData 和 SecondData 之间创建了一个单向的 @OneToOne 关系。它对我有用。
标签: java spring-data jointable