2017-01-20 10 views
2

私の質問は、春のデータがクエリを生成する方法についてです。春のデータ内の関係で見つける

私は2つのエンティティを持っている:メッセージ、送信者

@Entity 
public class Message extends BaseEntity { 
@ManyToOne 
protected Account sender; 
} 

私は

messageDao.findBySenderId(Long id) 

結果への呼び出しは、2つのテーブル間left outer joinと2つの2のテーブルからクエリのすべての列である必要があり、私の期待は単にメッセージテーブルwhere sender_id =から渡された値を選択するだけでした。

強制的に最初のメッセージエンティティだけを選択し、もう一方のエンティティと結合しないようにする方法はありますか?私はあなたが(未テスト)のようなリポジトリが必要になりますカスタム@query

答えて

2

をfindByをいない使用して、where句 に簡単な条件をしたい:

@Repository 
public interface MessageRepository extends JpaRepository<Message, Long> { 
     Message findFirstBySenderId(Long id); 
} 

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods

+0

ありがとうございますが、私はすでにリポジトリを持っていますが、私が指摘したように、メソッド呼び出しmessageDao.findBySenderId(ロングID)を使用しますが、期待通りに動作しません –

0

を参照してください、私はHibernateがLEFT JOINをやっていると思います@ManyToOneoptional = true(デフォルト)です。

試してみてください。

@ManyTone(optional = false) 

そして、あなたは、あなたが期待通りに、HibernateはJOINせずにクエリをやって表示されます。

関連する問題