两个表上的内连接,这些表未使用HQL进行映射

时间:2018-05-25 04:49:52

标签: mysql spring-boot spring-data-jpa hibernate-mapping

我有表A和表b没有关系。但是表A,表B与实体映射,并且实体之间没有关系。 假设表格如下所示。

@Entity
@Table(name = "tableA")
public class TableA

@Entity
@Table(name = "tableB")
public class TableB

表A

IDA, 参考编号, 模式, 型

表B

IDB, 户口号码, sechema, 型

我需要得到" accountno"来自tableB的给定" ref_no"有相同的" sechema"和"键入"。我可以得到" accountno"在我的实现CrudRepository的存储库类中使用以下本机SQL查询。

@Query(value = "SELECT b.accountno FROM DB.tableA as a INNER JOIN DB.tableB as b ON b.sechema = a.sechema AND b.type = a.type WHERE a.ref_no= ?1", nativeQuery = true)
Integer findByRefNo(String refNo);

有人可以帮助我克服这个问题,因为使用本机查询,如果数据库名称不同,我需要更改。

我在下面试过,但它给了我错误。

@Query(value = select b.accountno from TableA a join TableB b where b.sechema = a.sechema and b.type = a.type and (:refNo is null or a.refNo = :refNo)")
Integer findByRefNo(@Param("refNo") String refNo);

1 个答案:

答案 0 :(得分:0)

如果您使用的是Hibernate 5.1+,则查询在HQL中几乎相同:

@Query("select b.accountno from TableA a join TableB b on b.sechema = a.sechema and b.type = a.type where a.ref_no= ?1")
Integer findByRefNo(String refNo);

更多信息:12