私は Xtend で遊んでいて、障害にぶつかりました。
私のクラスは Spring Data リポジトリを使用しています。インターフェースは次のとおりです。
public interface UserRepository extends GraphRepository<UserNode>, RelationshipOperationsRepository<UserNode> {
public UserNode findByEntityId(Long entityId);
}
GraphRepository<T>
(私のプロジェクトではなく、 Spring Data の一部である)のスーパーインターフェイスは、次を宣言します。
@Transactional
<U extends T> U save(U entity);
@Transactional
<U extends T> Iterable<U> save(Iterable<U> entities);
ただし、次のコードは失敗します。
// UpdateUserProcessorExample.xtend
class UpdateUserProcessorExample {
@Autowired
UserRepository repository
def updateUser()
{
var user = repository.findByEntityId(1L)
// The following line generates an error:
repository.save(user)
}
}
これにより、次が生成されます。
境界の不一致: 型引数は、メソッド save(Iterable) の境界型パラメーターの有効な代替ではありません
Xtend が間違ったオーバーロードされたメソッドを選択しているように見えます。
タイプヒントを追加してみました、ala:
var UserNode user = repository.findByEntityId(1L)
しかし、これでも同じエラーが発生します。ここで何が間違っていますか?