MongoDB 文档建议从ObjectId中提取插入时间,而不是使用单独的时间字段.有谁知道如何使用Spring Data MongoDB执行此操作?
特别是,我想查询在特定日期范围内插入的文档.
有没有办法使用spring-data mongo @Query注释来表示下面的查询.
db.users.find({userName: "titogeo"}, {requests: 1, _id:0})
Run Code Online (Sandbox Code Playgroud)
控制台中的上述查询输出是
请求":[{"who":"blahblahblah1","who":"blahblahblah2",
"
what":"REQUEST",
"when":ISODate("2012-09-05T17:52:14.339Z")}] }
我尝试了以下但没有奏效.
@Query("{userName: ?0}, {requests:1, _id:0}")
public Page<AddRequest> getAllFriendRequests(String userName, Pageable pageable);
Run Code Online (Sandbox Code Playgroud)
集合用户拥有User对象和请求是其中包含AddRequest对象的列表.
当我执行上面的方法时,我得到一个空白列表.任何帮助表示赞赏.
还有什么好的参考网站或书籍spring-data-mongo apis?
我正在使用Spring MVC和Spring Data,并且还配置了Spring Data DomainClassConverter来自动将String id转换为适当的Domain类.
我现在使用标签实现Order to Customer参考:
<form:select path="customer">
<form:option value="" label="Select" />
<form:options items="${customers}" itemValue="id" />
</form:select>
Run Code Online (Sandbox Code Playgroud)
这导致给定的HTML:
<select id="customer" name="customer" class="span6">
<option value="">Select</option>
<option value="1">Customer A</option>
<option value="2">Customer B</option>
<option value="3">Customer C</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当提交例如客户A的帖子时,我会得到一个例外:
org.apache.jasper.JasperException: org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @javax.validation.constraints.NotNull @javax.persistence.ManyToOne nl.kapsalonreflection.domain.Customer for value ''; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!
Run Code Online (Sandbox Code Playgroud)
这根本没有意义,因为收到的价值应该是1而不是''.我还调试了收到的请求参数,它只包含customer = 1(如预期的那样) …
我相信这个问题已在这里问了一段时间,但没有任何公认的答复.我实际上尝试了各种教程,但没有得到它们.我有一个multi modules maven项目.我有dependency-management和plugin-management在父项目中.poms如下所示:
<!--parent ${querydsl.version} = 2.3.2-->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>${project.build.sourceEncoding}</encoding>
<!-- <fork>true</fork>
-->
<meminitial>128m</meminitial>
<maxmem>512m</maxmem>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencyManagment>
<dependencies>
<!-- Querydsl -->
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${querydsl.version}</version>
</dependency>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-mongodb</artifactId>
<version>${querydsl.version}</version>
</dependency>
<!-- End Querydsl -->
</dependencies>
</dependencyManagment>
Run Code Online (Sandbox Code Playgroud)
我在db mobule中都有jpa和mongo,两者都在不同的包中.但我只想 …
mongodb maven-plugin querydsl spring-data spring-data-mongodb
我正在使用mongoDB + Java + SpringData.没有它的名字,是否有可能获得当前的收藏?
谢谢!
我正在开始一个新的Spring项目,并决定试用Spring Roo.在设置持久层时,我看到Spring Roo支持(实际上甚至默认为)ActiveRecord模式.虽然我过去一直是DAO/DTO粉丝,但Roo使用ActiveRecord模式非常好,因为它似乎"隐藏"apsect文件中的大多数ActiveRecord方法.
有没有人知道为什么当Spring Data在提供/隐藏CRUD(典型的DAO模式)方面做得如此漂亮时,Spring Roo开发人员会默认ROO使用AR模式?Spring是否试图让更多人使用AR模式而不是Repo模式?
我从我的表中选择最大代码,当它有数据时它可以工作但是当表是空的时我得到错误如下:
这里可能是存储库中的代码:
@Repository("depositRepository")
public interface DepositRepository extends JpaRepository<Deposit,Integer>,
JpaSpecificationExecutor<Deposit> {
@Query("select max(u.code) from Deposit u")
String getMaxCode();
}
Run Code Online (Sandbox Code Playgroud)
这是我在服务中调用获取结果的代码:
String maxCode=depositRepo.getMaxCode();
Run Code Online (Sandbox Code Playgroud)
我得到了错误,如下所述:
Hibernate:
select
max(deposit0_.code) as col_0_0_
from
rems.tbldeposit deposit0_
20:10:55,182 ERROR [rems.controller.DepositController] java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud) I use Spring Data Mongo with repositories. In my xml-configuration everything works fine. Now I want to use Java configuration instead of xml-configuration. This is my java configuration for the repositories:
@Configuration
@EnableMongoRepositories
public class DefaultMongoDbFactoryConfig extends AbstractMongoConfiguration{
@Value("${db.name}") private String dbName;
@Inject
private Mongo mongo;
@Bean
protected MongoDbFactory defaultMongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(mongo, dbName);
}
@Bean
protected MongoTemplate defaultMongoTemplate() throws Exception {
return new MongoTemplate(defaultMongoDbFactory());
}
@Override
protected String getDatabaseName() {
return dbName;
}
@Override
public Mongo …Run Code Online (Sandbox Code Playgroud) 我完全被我希望开箱即用的东西搞糊涂了.所以,要么我做了一些完全错误的事情,要么这只是一个误解.
我试图在JPA Entity类中使用getter/setter注释.我坚持在JPA维基上找到的一个例子(s.http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes#Conversion).该示例如下所示:
@Entity
public class Employee {
...
private boolean isActive;
...
@Transient
public boolean getIsActive() {
return isActive;
}
public void setIsActive(boolean isActive) {
this.isActive = isActive;
}
@Basic
private String getIsActiveValue() {
if (isActive) {
return "T";
} else {
return "F";
}
}
private void setIsActiveValue(String isActive) {
this.isActive = "T".equals(isActive);
}
}
Run Code Online (Sandbox Code Playgroud)
我采用了最清晰,最干净的spring-data-jpa示例:http://spring.io/guides/gs/accessing-data-jpa/.
我从git中检查出来并更改了他们的示例实体类(s.https://www.chithub.com/spring-guides/gs-accessing-data-jpa/blob/master/complete/src/main/java/hello/Customer .java)看起来如下:
@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private String …Run Code Online (Sandbox Code Playgroud) 我使用spring数据,我觉得非常有趣,但有一个问题,我想要一个通用的方式来搜索实体的领域.
我有一个有很多领域的实体
public class Lostcard implements java.io.Serializable {
private Integer id;
private String nom;
private String prenom;
private String cin;
@DateTimeFormat(pattern = "MM/dd/yyyy")
private Date dateDeclaration;
@DateTimeFormat(pattern = "MM/dd/yyyy")
private Date dateDuplicata;
private String annexeAdmin;
[...]
Run Code Online (Sandbox Code Playgroud)
所以我想这样做:
public interface LostcardRepository extends JpaRepository<Lostcard, Integer> {
List<Lostcard> findByNom(String nom);
List<Lostcard> findByPrenom(String prenom);
List<Lostcard> findByCin(String cin);
[...]
}
Run Code Online (Sandbox Code Playgroud)
有没有像findByProperty(String属性,Object value)这样的通用方法?
spring-data ×10
spring ×5
java ×4
mongodb ×4
spring-mvc ×2
activerecord ×1
jpa ×1
maven-plugin ×1
nosql ×1
querydsl ×1
spring-mongo ×1
spring-roo ×1