に参加:学部の無効な値が含まれていると、原因教師でいくつかの古いレコードにJPA 2.0 NamedQuery左は、私は以下のように、教師の二つのテーブルの部門を持っている
Departments Teachers
--- ---
D_ID T_ID
Code Name
Dept (logically reference D_ID)
、例えば、部門= 5と教師、 DepartmentsにはD_ID = 5はありません。
SQLでは、 SELECT t.*, COALESCE(d.Code, t.Dept) as Dept FROM Teachers t LEFT JOIN Departments d ON d.D_ID = t.Dept
を使用して、期待される結果を得ることができましたが、私はLEFT JOINを使用してJPAで行う方法がわからず、Teachersエンティティとして結果を返します。
私はTeachersエンティティとDepartmentsエンティティの両方を定義しましたが、古いレコードのために教師または部門エンティティで@OneToOne/@OneToMany/@ManyToOne
の関係を定義する必要があるかどうかはわかりません。
class Teachers
String T_ID;
String Name;
String Dept;
@Transient
String DeptCode;
class Departments
String D_ID;
String Code;
私は初心者ですが、SpringDataJPAとHibernateでJPA 2.0を使用しています。
お願いします。
私がしようとしたが失敗。私は次の例外があります。バージョンに問題はありますか?私はHibernateを使用しています。4.2.21 原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:予期しないトークン:ONに近い行1 – Calvin
バージョンの問題だと思っていません。オン条件を削除してWHERE句に入れます。私は答えを編集しました。私の場合は動作しますが、このリンクで説明しているように、hqlでJOIN ONを使用することはお勧めできません。http://stackoverflow.com/questions/12003430/hibernate-query-syntax-exception-org- hibernate-hql-ast-querysyntaxexception-u – amicoderozer