我已經做了一個實驗......兩個彈簧數據的存儲庫一個共同的實體: - JPA - MongoDB的春天的數據mongodb。生成的ID的錯誤
首先我使用下列庫版本:
彈簧DATA- JPA:1.7.0.RELEASE 彈簧數據的MongoDB:1.6.0.RELEASE
我有一個實體:
@Entity
@Table(name = "ACCOUNTS")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ACCOUNT_ID")
private Long id;
@Column(name = "ACCOUNT_NUMBER")
private String number;
public Account() {
}
public Account(String number) {
this.number = number;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
JPA回購itory具有以下外觀:
public interface Repository extends CrudRepository<Account, Long> {
public Account findByNumber(String number);
}
的MongoDB庫具有以下外觀:
包ua.home.springdata.investigation.repository.mongo;
public interface Repository extends CrudRepository<Account, Long> {
}
所以... JPA工程:)沒有什麼特別的:) 但MongoDB的測試沒有通過:( 我得到一個錯誤:
org.springframework.dao.InvalidDataAccessApiUsageException: Cannot autogenerate id of type java.lang.Long for entity of type ua.home.springdata.investigation.entity.Account! at org.springframework.data.mongodb.core.MongoTemplate.assertUpdateableIdIfNotSet(MongoTemplate.java:1149) at org.springframework.data.mongodb.core.MongoTemplate.doSave(MongoTemplate.java:878) at org.springframework.data.mongodb.core.MongoTemplate.save(MongoTemplate.java:833) at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.save(SimpleMongoRepository.java:73) at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.save(SimpleMongoRepository.java:88) at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.save(SimpleMongoRepository.java:45) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:442) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:427) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:381) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy26.save(Unknown Source)
我認爲這是一個非常普遍的情況下,爲什麼沒有春天能夠產生實體ID爲Long數據?這太不可思議。
當我加入註解** @ GeneratedValue **我的IDE在那裏和那裏拋出一個錯誤。我在我的'pom.xml'文件中使用了** jpa **依賴項,但即使這樣也不能正常工作,因爲它搜索的是MySQL數據庫,而我正在使用NoSQL(mongoDB)。所以,如果你可以幫助我的東西,請做。提前致謝。 – Learner 2017-03-31 09:08:26
@Neil Stockton當我添加註釋** @ GeneratedValue **時,我的IDE在那裏和那裏拋出一個錯誤。我在我的'pom.xml'文件中使用了** jpa **依賴項,但即使這樣也不能正常工作,因爲它搜索的是MySQL數據庫,而我正在使用NoSQL(mongoDB)。所以,如果你可以幫助我的東西,請做。在此先感謝.. – Learner 2017-03-31 09:09:37