给出某些类中所有spring数据存储库的列表Bar:
@Autowired
private List<Repository> repositories;
Run Code Online (Sandbox Code Playgroud)
如何Foo在上面的列表中找到现有域类的存储库?
假设存在以下内容:
@Entity
public class Foo {
...
}
Run Code Online (Sandbox Code Playgroud)
和
public interface FooRepository extends JpaRepository<Foo, String> {}
Run Code Online (Sandbox Code Playgroud) 假设我想实现某种乐观锁定并使用ETag来指示最新的资源状态.这意味着,客户端在进行更新If-Match时将使用标头PUT.
根据HTTP规范,412 Precondition failed如果为If-Match标头提供的ETag 与资源的当前状态不匹配,则服务器必须返回.
然而,409 Conflict似乎更接近我想要在语义上表达的内容,特别是因为它给出了在响应中包含的指南.
409如果未能匹配If-Match标题中提供的ETag,那么返回是否非常错误?
我是使用MongoDB的Spring Data的新手,我希望在MongoRepository扩展接口中有一个自动生成的查询方法,需要过滤,排序和限制.
查询如下所示:
// 'created' is the field I need to sort against
find({state:'ACTIVE'}).sort({created:-1}).limit(1)
Run Code Online (Sandbox Code Playgroud)
存储库界面如下所示:
public interface JobRepository extends MongoRepository<Job, String> {
@Query("{ state: 'ACTIVE', userId: ?0 }")
List<Job> findActiveByUserId(String userId);
// The next line is the problem, it wont work since
// it's not in the format @Query expects
@Query("find({state:'ACTIVE'}).sort({created:-1}).limit(1)")
Job findOneActiveOldest();
...
}
Run Code Online (Sandbox Code Playgroud)
我知道可以将一个Sort参数添加到查询方法中以便进行排序,但问题是将结果限制为仅一个对象.这可以在不必编写自定义JobRepositoryImpl的情况下完成吗?
谢谢
编辑:
我正在寻找的例子:
@Query("{ state:'ACTIVE', $orderby: {created:-1}, $limit:1 }")
Job findOneActiveOldest();
Run Code Online (Sandbox Code Playgroud)
要么
@Query("{ state:'ACTIVE' }")
@Sort("{ created:-1 }")
@Limit(1)
Job findOneActiveOldest();
Run Code Online (Sandbox Code Playgroud)
但这显然不起作用:(
我真的很喜欢Spring Data Rest为你写的所有样板代码,但我宁愿只是一个'常规?' 没有所有HATEOAS东西的REST服务器.主要原因是我在客户端使用Dojo Toolkit,并且它的所有小部件和存储都被设置为返回的json只是一个直接的项目数组,没有所有链接和类似的东西.有谁知道如何配置这个与java配置,以便我得到所有为我编写的mvc代码,但没有所有的HATEOAS东西?
当使用新的Spring Data Evans版本时,能够使用java 8附带的一些好东西是很好的.其中一个是接口中的默认实现.下面的存储库使用QueryDSL使查询类型安全.
我的问题是,在我写这篇文章之前,我使用了单独的UserRepositoryCustom接口模式,findByLogin然后是另一个类UserRepositoryImpl,在那个类中,我将@PersistenceContext获得当前的EntityManager.
我什么EntityManager时候没有上课?它甚至可能吗?
@Repository
public interface UserRepository extends JpaRepository<User, UUID> {
final QUser qUser = QUser.user;
// How do I get the entityManager since this is a interface, i cannot have any variables?
//@PersistenceContext
//EntityManager entityManager;
public default Optional<User> findByLogin(String login) {
JPAQuery query = new JPAQuery(entityManager);
User user = query
.from(qUser)
.where(
qUser.deleter.isNull(),
qUser.locked.isFalse(),
qUser.login.equalsIgnoreCase(login)
)
.singleResult(qUser);
return Optional.ofNullable(user);
}
}
Run Code Online (Sandbox Code Playgroud) 我们如何在Spring Data Mongo中选择特定字段.我尝试以下,但我从投例外Foo来String.
运用 @Query
@Query(value="{path : ?0}", fields="{path : 0}")
String findPathByPath(String path);
Run Code Online (Sandbox Code Playgroud)
非 @Query
String findPathByPath(String path);
Run Code Online (Sandbox Code Playgroud)
这是文档模型
@Document(collection = "foo")
public class Foo {
String name, path;
…
}
Run Code Online (Sandbox Code Playgroud) 我们正在考虑将一些遗留的JaveEE应用程序转换为Spring Boot.我们正在让一个供应商执行此操作,但是他们声称使用嵌入式Tomcat或Jetty的Spring启动不是生产就绪,而是建议我们将其打包以便部署到容器(Tomcat/Jetty或JBoss)中.这种失败的目的.索赔准确吗?
DDD指定每个聚合的存储库,但是当采用Spring Data JPA时,我们只有在声明每个实体的接口时才能利用这些优势.如何解决阻抗不匹配问题?
我希望尝试封装在聚合存储库中的存储库接口,这是一个好的解决方案还是更好的可用解决方案?
到给定的一个例子:Customer是聚合根和实体等Demographics,Identification,AssetSummary等等,其中每个实体可以从具有自己的资源库接口受益.没有违反DDD的最佳方法是什么?
domain-driven-design ddd-repositories spring-data spring-data-jpa
我有以下控制器方法:
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, value = "session/{id}/exercises")
public ResponseEntity<Resources<Exercise>> exercises(@PathVariable("id") Long id) {
Optional<Session> opt = sessionRepository.findWithExercises(id);
Set<Exercise> exercises = Sets.newLinkedHashSet();
if (opt.isPresent()) {
exercises.addAll(opt.get().getExercises());
}
Link link = entityLinks.linkFor(Session.class)
.slash(id)
.slash(Constants.Rels.EXERCISES)
.withSelfRel();
return ResponseEntity.ok(new Resources<>(exercises, link));
}
Run Code Online (Sandbox Code Playgroud)
所以基本上我试图揭露一个特定Set<>的Exercise实体Session.当exercise实体为空时,我得到一个像这样的JSON表示:
{
"_links": {
"self": {
"href": "http://localhost:8080/api/sessions/2/exercises"
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以基本上没有嵌入式实体,而以下类似的东西是可取的:
{
"_links": {
"self": {
"href": "http://localhost:8080/api/sessions/2/exercises"
}
},
"_embedded": {
"exercises": []
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何执行这个?
我使用PagingAndSortingRepository和findAll(Pageable pageable)方法来分页我的数据.我认为没有办法提供任何条件.例如,有时我想选择和分页地址city = NY.有没有办法同时提供条件和分页?
spring-data ×6
spring ×5
java ×4
jpa ×2
http ×1
mongodb ×1
mongodb-java ×1
rest ×1
spring-boot ×1
web ×1