Skip to content

Instantly share code, notes, and snippets.

@gregturn
Created February 9, 2016 18:04
Show Gist options
  • Select an option

  • Save gregturn/1c27939b25a839dce2ad to your computer and use it in GitHub Desktop.

Select an option

Save gregturn/1c27939b25a839dce2ad to your computer and use it in GitHub Desktop.
DevNexus example
package com.greglturnquist.devnexus;
import lombok.Data;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import javax.persistence.*;
import java.util.Arrays;
import java.util.List;
@SpringBootApplication
public class DevnexusApplication {
public static void main(String[] args) {
SpringApplication.run(DevnexusApplication.class, args);
}
@Bean
CommandLineRunner init(EmployeeRepository employeeRepository, ManagerRepository managerRepository) {
return (String) -> {
Manager gandalf = managerRepository.save(new Manager("Gandalf"));
Employee frodo = employeeRepository.save(new Employee("Frodo Baggins", "ring bearer"));
Employee bilbo = employeeRepository.save(new Employee("Bilbo Baggins", "burglar"));
frodo.setManager(gandalf);
bilbo.setManager(gandalf);
employeeRepository.save(Arrays.asList(frodo, bilbo));
};
}
}
@Data
@Entity
class Employee {
@Id @GeneratedValue private Long id;
private String name;
private String role;
@ManyToOne
private Manager manager;
protected Employee() { /* Thanks JPA! */}
public Employee(String name, String role) {
this.name = name;
this.role = role;
}
}
@RepositoryRestResource
interface EmployeeRepository extends CrudRepository<Employee, Long> {
List<Employee> findByManagerName(@Param("name") String name);
List<Employee> findByRoleContaining(@Param("search") String search);
}
@Data
@Entity
class Manager {
@Id @GeneratedValue private Long id;
private String name;
@OneToMany(mappedBy = "manager")
private List<Employee> employees;
protected Manager() {};
public Manager(String name) {
this.name = name;
}
}
@RepositoryRestResource
interface ManagerRepository extends CrudRepository<Manager, Long> {
List<Manager> findByEmployeesRoleContaining(@Param("search") String search);
}
@gregturn

gregturn commented Feb 9, 2016

Copy link
Copy Markdown
Author
Caused by: java.lang.IllegalStateException: Illegal attempt to dereference path source [null.employees] of basic type
    at org.hibernate.jpa.criteria.path.AbstractPathImpl.illegalDereference(AbstractPathImpl.java:98) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final]
    at org.hibernate.jpa.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:191) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.traversePath(JpaQueryCreator.java:305) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.traversePath(JpaQueryCreator.java:306) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:220) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:148) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:88) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.create(JpaQueryCreator.java:46) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:110) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$CountQueryPreparer.<init>(PartTreeJpaQuery.java:230) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:64) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:95) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:206) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:73) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:416) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) ~[spring-data-commons-1.11.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
    ... 170 common frames omitted

2016-02-09 12:03:16.569  INFO 17468 --- [  restartedMain] .b.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/Users/gturnquist/src/devnexus-demo/target/classes/]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment