Ich bin neu in der Feder-Daten-jpa und bin derzeit versucht, mit Hibernate zu implementieren. Ich habe die tutorial verfolgt! Dafür stehen derzeit Probleme, die Anwendung selbst zu starten. Ich erhalte die folgende Ausnahme bei der Inbetriebnahme:Federdaten jpa @Entity Eigenschaft nicht gefunden Ausnahme
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property customer found for type com.adaptris.dashboard.customer.Customer
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:74)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:326)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:352)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:306)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:244)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:73)
at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:180)
at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:260)
at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:240)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:71)
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:57)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:280)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:148)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:125)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:41)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
Kunde ist meine Domain-Klasse
@Entity(name = "customer")
mit
kommentierte Und ich nehme an, es wird versucht, an die DB zu verbinden und den Kunden Tisch holen, die ich habe tatsächlich konfiguriert. Hier ist meine Feder-Konfiguration:<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Activate Spring Data JPA repository support -->
<jpa:repositories base-package="com.adaptris.dashboard.customer" />
<!-- Declare a datasource that has pooling capabilities -->
<bean id="jpaDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" p:driverClass="${app.jdbc.driverClassName}"
p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}"
p:acquireIncrement="5" p:idleConnectionTestPeriod="60" p:maxPoolSize="100"
p:maxStatements="50" p:minPoolSize="10" />
<!-- Declare a JPA entityManagerFactory -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:persistenceXmlLocation="classpath*:META-INF/persistence.xml"
p:persistenceUnitName="hibernatePersistenceUnit" p:dataSource-ref="jpaDataSource"
p:jpaVendorAdapter-ref="hibernateVendor" />
<!-- Specify our ORM vendor -->
<bean id="hibernateVendor"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
p:showSql="false" />
<!-- Declare a transaction manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory" />
Und die DB ist MYSQL, die ausgeführt wird. Folgende sind die Eigenschaften:
# database properties
app.jdbc.driverClassName=com.mysql.jdbc.Driver
app.jdbc.url=jdbc\:mysql\://Mallik-PC/adaptrisschema
app.jdbc.username=dbuser
app.jdbc.password=dbpassword
Bitte helfen Sie mir aus diesem Problem heraus!
Vielen Dank für Ihre Antwort !! Nach einem Tag habe ich das herausgefunden und diese Methode aus meinem Repository entfernt. Aber findOne ( id) Idee klingt gut. Ich werde das versuchen !! –
user1798932
Es hat auch mein Problem behoben, ABER was zum ...? Warum sollte es das Abfrageergebnis vom Namen der Methode abbilden wollen? es sollte es aus den Parametern von der DB kommen, könntest du bitte weiter ausarbeiten ?? – azerafati
Die Funktionsweise ist, dass es _always_ der Name der Getter/Setter-Methoden der Attribute ist, die mit den Datenbankspalten verglichen werden. Sie können dies ändern, indem Sie dem Attribut einen anderen Namen geben und die Annotation @Column ("MyColumnName") verwenden, um das Mapping manuell auszuführen. Wenn Sie keine von ihnen ausführen (weder Namensabgleich noch @Column), kann das Framework das Abfrageergebnis nicht mit Ihrem Objekt abgleichen. –