java - 不以逗号分隔的 Java JPA Left Join
问题描述
JPA结构中MYSQL结构翻译错误
我有 100% 的 mysql 查询:
SELECT DISTINCT * FROM list_orders LEFT JOIN orders_translate where list_orders._id=orders_translate._order_id
query JPA String query = "SELECT t1 FROM ListOrders t1 LEFT JOIN t1.speakers e WHERE e._id = t1._id";
public class OrdersTranslate implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "_id")
private Long id;
@Size(max = 50)
@Column(name = "_english_name")
private String englishName;
@Size(max = 50)
@Column(name = "_arabic_name")
private String arabicName;
@Size(max = 50)
@Column(name = "_russian_name")
private String russianName;
@Size(max = 50)
@Column(name = "_french_name")
private String frenchName;
@Basic(optional = false)
@NotNull
@Column(name = "_order_id")
private int order_id;
}
公共类 ListOrders 实现 Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "_id")
@SerializedName("_id")
private Integer id;
@Basic(optional = false)
@NotNull
@Column(name = "_number_id")
@SerializedName("_number_id")
private int numberId;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 50)
@Column(name = "name")
@SerializedName("name")
private String name;
@OneToOne(cascade = CascadeType.ALL)
private List<OrdersTranslate> speakers;
}
我得到下一个错误:
[53, 54] FROM 子句具有'ListOrders t1 LEFT JOINN t1.oerders'和'e',它们没有用逗号分隔。[42, 53] 标识变量“t1.oerders”未遵循 Java 标识符的规则。[56, 56] 必须为范围变量声明提供标识变量。
JPA查询有什么问题?MySQL 查询工作正常!
解决方案
起初 - 如果您在 ListOrders 表中有 OrdersTranslate 数组,则您没有 OneToOne 连接。这是 OneToMany 加入。
请在您的 ListOrders 课程中尝试:
@OneToMany(mappedBy="listOrders")
private List<OrdersTranslate> speakers;
在您的 OrdersTranslate 类中:
@ManyToOne
@JoinColumn(name = "_order_id")
private ListOrders listOrders;
然后您的 JPA 查询将如下所示:
SELECT t1 FROM ListOrders t1 LEFT JOIN t1.speakers e
推荐阅读
- reactjs - Potree-core:点不是用 Reactjs 渲染的
- c++ - GNU Radio OOT 块:AttributeError:“模块”对象没有属性“pthread”(使用 ZeroMQ 套接字)
- php - 如何将 mysqli_query 转换为 PDO?
- awkward-array - 绘制不同长度的锯齿状数组
- java - 如何检查两个字符串是否是字谜?
- reactjs - usereducer 不会更新状态
- javascript - 通过调节另一个对象属性来访问对象数组中的对象值
- c# - 在 Xamarin 表单中重置选取器显示值
- java - Quarkus 读取 `ResultSet` 并使用多线程处理
- tensorflow - 我在使用 tensorflow-gpu 时遇到问题。分配器 (GPU_0_bfc) 内存不足,试图在 freed_by_count=0 的情况下分配 2.20GiB