Spring data jdbc-特定联接列

问题描述 投票:0回答:1

我有以下两个表:

Customer
id
name

Order
id
product_name
customer_id

具有一对一关系

和Java实体:

@Data
public class Customer{
    @Id
    private Long id;
    private String name;
}

@Data
public class Order{
    @Id
    private Long id;

    @Column("id")
    private Customer customer; //i want to somehow map this
    private String productName;
}

和控制器

@Controller
public class MyController{
    //...
    @GetMapping("/")
    public String getmap(Model m){
        System.out.println(repository.findAll()) //prints "nullrows" due to wrong sql statement
        return "mytemplate";
    }
}

我当前的问题是,那个春天正在执行以下sql语句:

SELECT Order.id, Order.product_name, Customer.id, Customer.name
FROM Order LEFT OUTER JOIN Customer ON Customer.id = Order.id

我真正想要的是加入Customer.id = Order.customer_id,同时保持原样,即客户参考需要保持秩序。

我已经尝试了到目前为止可以找到的所有注释,但是都没有取得任何进展。

编辑:

我不允许使用jpa /休眠

编辑2:

我确实在这里回答了我自己的问题,但是答案只是一个临时的解决方案,它不能大规模解决问题(想象另一个实体需要使用订单ID,它最终将使用不好的客户ID )

java spring spring-data spring-jdbc
1个回答
0
投票

一种解决方法是执行以下操作:

@Data
public class Customer{
    @Id
    private Long id;
    private String name;
}

@Data
public class Order{
    @Id
    private Long customerId;

    private Long id;

    @Column("id")
    private Customer customer; //i want to somehow map this
    private String productName;
}

使它自动在Customer.id = Order.customer_id上加入

但是,这看起来不是很好的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.