私は2つのエンティティを持っています:
@Entity
public class Car {
@Id
private Long id;
@OneToOne
private Engine engine;
}
そしてもう一つ:
@Entity
public class Engine {
@Id
private Long id;
@Column
private String value1;
@Column
private String value2;
}
私の jpaRepositoy インターフェースで、やりたいこと:
public interface CarRepository extends JpaRepository<Car, Long> {
public Car findByEngine(Engine engine);
}
しかし、次のようにしてエンジンを作成したため、このメソッドは格納されたエンティティを返しません。
Engine engine = new Engine("someValue", "someValue");
データベースに保存されているエンジンのIDを設定せずに。
id のような列を除外できるかどうか知りたいですか?いいえの場合、これを行う唯一の方法は次のとおりです。
@Query("SELECT c FROM Car c WHERE c.engine.value1 = :value1 and c.engine.value2 = :value2")
findByEngine(@Param("value1") String value1, @Param("value2") String value2)
?
関連する質問: OneToOne ではなく OneToMany の関係がある場合、
@Entity
public class Car {
@Id
private Long id;
@OneToMany
private List<Engine> engines;
}
このリクエストを次のようにするにはどうすればよいですか (まだ id 列はありません):
public Car findByEngines(List<Engine> engines);
どうもありがとう !