我有两个实体:
@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)
?
相关问题:如果我有 OneToMany 关系而不是 OneToOne,比如
@Entity
public class Car {
@Id
private Long id;
@OneToMany
private List<Engine> engines;
}
我怎么能做这个请求有类似的东西(仍然没有 id 列):
public Car findByEngines(List<Engine> engines);
非常感谢 !