Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据jdbc一对多错误连接_Java_Mysql_Spring_Spring Boot_Spring Data Jdbc - Fatal编程技术网

Java Spring数据jdbc一对多错误连接

Java Spring数据jdbc一对多错误连接,java,mysql,spring,spring-boot,spring-data-jdbc,Java,Mysql,Spring,Spring Boot,Spring Data Jdbc,我使用SpringBoot2.3.3和SpringDataJDBC2.0.3来建模to元素和类类型之间的关系。吉他有类别类型 我在H2中的模式(也在MySQL中)如下所示: 我有以下课程: @Data @NoArgsConstructor @AllArgsConstructor @Builder @Table(value = "guitars") public class Guitar { @Id long id; String name; S

我使用SpringBoot2.3.3和SpringDataJDBC2.0.3来建模to元素和类类型之间的关系。吉他有类别类型

我在H2中的模式(也在MySQL中)如下所示:

我有以下课程:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(value = "guitars")
public class Guitar {
    @Id
    long id;
    String name;
    String description;
    @MappedCollection(idColumn = "id")
    @Column(value = "classType")
    ClassType classType;
}
我的存储库如下所示:

@Repository
public interface GuitarRepository extends CrudRepository<Guitar, Long>, PagingAndSortingRepository<Guitar, Long> {}
SELECT (...) FROM `guitars` LEFT OUTER JOIN `class_type` AS `classType` ON `classType`.`id` = `guitars`.`classType`
此句子出现时带有不正确的左外连接

SELECT `guitars`.`id` AS `id`, `guitars`.`name` AS `name`, `guitars`.`description` AS `description`, `classType`.`id` AS `classType_id`, `classType`.`description` AS `classType_description` FROM `guitars` LEFT OUTER JOIN `class_type` AS `classType` ON `classType`.`id` = `guitars`.`id`
但我希望选择是这样的:

@Repository
public interface GuitarRepository extends CrudRepository<Guitar, Long>, PagingAndSortingRepository<Guitar, Long> {}
SELECT (...) FROM `guitars` LEFT OUTER JOIN `class_type` AS `classType` ON `classType`.`id` = `guitars`.`classType`

我错过了什么吗?

这不是一对多的关系。一个
吉他
将引用多个
类类型
实例

相反,它似乎是一种多对一关系:许多
guist
实例可能引用相同的
ClassType
。这使得
ClassType
Guitar
不同,因此它不能被直接的java引用引用,而只能被它的id引用

有关如何使用Spring数据JDBC对这种关系建模的更详细说明,请参见

SELECT `guitars`.`id` AS `id`, `guitars`.`name` AS `name`, `guitars`.`description` AS `description`, `classType`.`id` AS `classType_id`, `classType`.`description` AS `classType_description` FROM `guitars` LEFT OUTER JOIN `class_type` AS `classType` ON `classType`.`id` = `guitars`.`id`
SELECT (...) FROM `guitars` LEFT OUTER JOIN `class_type` AS `classType` ON `classType`.`id` = `guitars`.`classType`