我只有一个实体,即School-一个班级(示例)。我在那里有7个字段,这些字段来自3个不同的表。例如,第一个表称为“课堂”,第二个表为“教师”,第三个表为“主题”。教师和科目表通过pk:subject_id连接,而教室表和教师表则通过教室ID连接。
我尝试了辅助表,但是看起来不正确。如何在单个实体内连接这些表并在DAO IMPLementation中编写查询
答案 0 :(得分:2)
您应该对每个表使用实体。 如果需要选择与数据库无关的Model类,可以使用spring-data-jpa轻松完成。
创建Model类(例如School)后,只需使用以下示例进行查询:
class ProgrammerNameAndCity{
fields...
allArgConstructor...
}
public interface ProgrammerRepository extends JpaRepository<Programmer,Long> {
@Query(" select new com.zlrx.database.pojo.ProgrammerNameAndCity(p.name,p.address.city) " +
"from Programmer p where p.idNumber=?1")
ProgrammerNameAndCity findNameAndCityByIdNumber(String idNumber);
}
在此示例中,程序员具有一个地址字段(OneToOne),但是您可以创建任何类型的查询,这里重要的是模型的构造函数调用。
如果要使用普通sql或impl类而不是接口进行查询,则也可以使用Spring的RowMapper。
答案 1 :(得分:-1)
class ProgrammerNameAndCity{
fields...
allArgConstructor...
}
public interface ProgrammerRepository extends JpaRepository<Programmer,Long> {
@Query(" select new com.zlrx.database.pojo.ProgrammerNameAndCity(p.name,p.address.city) "
+ "from Programmer p where p.idNumber=?1")
ProgrammerNameAndCity findNameAndCityByIdNumber(String idNumber);
}