[英]Spring data JPA - Exclude ID column from one entity parameter
我有两个实体:
@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);
非常感谢 !
这个@Query("SELECT c FROM Car c WHERE c.value1 = :value1 and c.value2 = :value2")
对于您的场景是不正确的jpql查询,您在Car
实体中没有value1
和value2
。
正确的将是:
@Query("SELECT c FROM Car c WHERE c.engine.value1 = :value1 and c.engine.value2 = :value2").
您可以尝试使用此方法名称,我认为这样可行:
findByEngineValue1AndEngineValue2(String value1, String value2)
但对于列表一,我认为你不能用方法名称弥补它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.