我有以下两个表:
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 )
一种解决方法是执行以下操作:
@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
上加入
但是,这看起来不是很好的解决方法。