标签: spring-data-jpa

JPA多对多关系中间表未更新

我有 CATEGORY、AD 和 CATEGORY_AD 表,典型的多对多关系。不知何故,CATEGORY_AD 表中没有插入任何内容。我错过了什么?

在 Category.java 中:

@ManyToMany
@JoinTable(name = "CATEGORY_AD", joinColumns = {
        @JoinColumn(name = "CATEGORY_ID", referencedColumnName = "ID") }, inverseJoinColumns = {
                @JoinColumn(name = "AD_ID", referencedColumnName = "ID") })
private List<Ad> ads;
Run Code Online (Sandbox Code Playgroud)

在 Ad.java 中:

@ManyToMany(mappedBy = "ads")
private List<Category> categories;
Run Code Online (Sandbox Code Playgroud)

在我的服务类中:

        Category laCat = new Category();
        laCat.setId(categoryId);
        laCat.getAds().add(ad);

        ad.getCategories().add(laCat);
ad = adRepository.saveAndFlush(ad);
Run Code Online (Sandbox Code Playgroud)

java spring jpa spring-data-jpa

0
推荐指数
1
解决办法
2297
查看次数

多个 EntityFactoryManager 冲突

我有一个 grails 应用程序。我需要访问不同的数据库应用程序。我已将两者都添加为依赖项。我EntityManagerFactory为每个数据库创建了两个不同的数据库,如下所示。但我得到了这个例外

    ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:51)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:335)
    at grails.boot.GrailsApp.run(GrailsApp.groovy:324)
    at grails.boot.GrailsApp$run.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
    at analyticsapplication.Application.main(Application.groovy:8)
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:99)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:76)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:457)
    at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:168)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:160)
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
    ... 13 common frames omitted …
Run Code Online (Sandbox Code Playgroud)

grails spring spring-data-jpa spring-boot

0
推荐指数
1
解决办法
1684
查看次数

存储库的 Spring JPA 数据扫描不起作用

好像我禁用了 jpa 存储库。有这个错误:

严重:StandardWrapper.Throwable org.springframework.beans.factory.UnsatisfiedDependencyException:在文件 [C:\Users\jasiu\workspace2.metadata.plugins\org.eclipse.wst.server.core\ tmp0\wtpwebapps\BuyMyTime\WEB-INF\classes\web\UserController.class]:不满足的依赖通过构造函数参数 0 表示:没有为依赖 [data.UserRepository] ​​找到类型为 [data.UserRepository] ​​的合格 bean:预期至少为 1 bean 有资格作为此依赖项的自动装配候选者。依赖注解:{}; 嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖项 [data.UserRepository] ​​找到类型为 [data.UserRepository] ​​的合格 bean:预期至少有 1 个 bean 有资格作为此依赖项的自动装配候选者。

配置:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackages={"data"})
@ComponentScan(basePackages={"data"},
excludeFilters={
    @Filter(type=FilterType.ANNOTATION, value = EnableWebMvc.class)
})
public class RootConfig {

@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory emf, DataSource dataSource){
    JpaTransactionManager transactionManager = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(emf);
    transactionManager.setDataSource(dataSource);
    return transactionManager;
}

@Bean
public DataSource dataSource() {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/HelloWorld");
    dataSource.setUsername("login");
    dataSource.setPassword("haslo");
    return dataSource;
}

@Bean
public LocalContainerEntityManagerFactoryBean …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-mvc spring-data-jpa

0
推荐指数
1
解决办法
2万
查看次数

从数据库加载数据时发生 StackOverflowError

我有使用 jpa 框架连接到数据库的 java 应用程序。对象UserInformation包含AdditionData对象,当我userInformationRepository.findByUserId(id)收到错误时。作为回应,我看到带有许多内部对象的 json

userInformation->additionData->userInformation->userInformation->additionData->userInformation->....
Run Code Online (Sandbox Code Playgroud)

例外:

>java.lang.StackOverflowError: null
 Method threw 'java.lang.StackOverflowError' exception. Cannot evaluate com.entity.UserInformation.toString()


java.lang.StackOverflowError: null
    at javax.servlet.ServletResponseWrapper.getBufferSize(ServletResponseWrapper.java:167) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at javax.servlet.ServletResponseWrapper.getBufferSize(ServletResponseWrapper.java:167) ~[tomcat-embed-core-8.5.6.jar:8.5.6]
    at org.springframework.security.web.util.OnCommittedResponseWrapper.checkContentLength(OnCommittedResponseWrapper.java:232) ~[spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
    at org.springframework.security.web.util.OnCommittedResponseWrapper.access$200(OnCommittedResponseWrapper.java:33) ~[spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
    at org.springframework.security.web.util.OnCommittedResponseWrapper$SaveContextServletOutputStream.write(OnCommittedResponseWrapper.java:637) ~[spring-security-web-4.1.3.RELEASE.jar:4.1.3.RELEASE]
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2033) ~[jackson-core-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeRaw(UTF8JsonGenerator.java:632) ~[jackson-core-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeRaw(UTF8JsonGenerator.java:555) ~[jackson-core-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeNumber(UTF8JsonGenerator.java:931) ~[jackson-core-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.std.NumberSerializers$FloatSerializer.serialize(NumberSerializers.java:194) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:704) ~[jackson-databind-2.8.4.jar:2.8.4]
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:690) ~[jackson-databind-2.8.4.jar:2.8.4]
    at …
Run Code Online (Sandbox Code Playgroud)

java json entity-framework spring-data-jpa

0
推荐指数
1
解决办法
1680
查看次数

@DataJpaTest 停止使用 @Profile 注释

我想使用特定的弹簧测试配置文件进行 JPA 测试。但不知何故,它无法加载弹簧上下文。

@RunWith(SpringRunner.class)
@Profile("myTestProfile")
@DataJpaTest
@ContextConfiguration(classes = {TestingConfig.class, MyJpaConfig.class})
public class JpaPlusOtherStuffTest {

    @Autowired
    private TestEntityManager testEntityManager;
    ...
    @Autowired
    private MyJpaRepository myJpaRepository;
}
Run Code Online (Sandbox Code Playgroud)

失败并出现以下错误:

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'myJpaRepository': 
Cannot create inner bean '(inner bean)#5e77f0f4' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; 
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#5e77f0f4': 
Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No …
Run Code Online (Sandbox Code Playgroud)

spring spring-test spring-data-jpa spring-boot

0
推荐指数
1
解决办法
1599
查看次数

JPA - SpringData - 第 1 列等于第 2 列

我有一个spring-boot项目Spring-Data。我想做一个查询,如:

SELECT * FROM my_table WHERE column_1 = column_2
Run Code Online (Sandbox Code Playgroud)

我该如何使用SpringData JpaRepository? 我试图找到一种方法:

MyTable findByColumn1...Column2() 没有任何运气

spring hibernate spring-data spring-data-jpa spring-boot

0
推荐指数
1
解决办法
842
查看次数

Spring JPA - 查找方式和排序方式

我有一个竞赛实体:

@Entity
@Table(name = "T_CONTEST")
public class Contest { 

    //rest of the attributes

    @Column(name = "START_TIME")
    private LocalDateTime start;

    @Column
    @Enumerated(EnumType.STRING)
    private ContestStatus status;
}
Run Code Online (Sandbox Code Playgroud)

我想获得最近开始时间和状态 = 待定的第一场比赛。我知道这可以使用自定义查询来完成,但是正确的 Spring JPA 方法是什么?我试过,但这是不正确的。

Contest findTopByOrderByStartAndStatusDesc(ContestStatus status);
Run Code Online (Sandbox Code Playgroud)

java spring spring-data-jpa

0
推荐指数
1
解决办法
1万
查看次数

使用@PathVariable 获取多个请求参数

在获取请求中使用多个参数调用请求时出现以下错误: http://localhost:8080/find/1/empid/146220

白标错误页面

此应用程序没有明确的 /error 映射,因此您将其视为后备。

Tue Aug 01 19:33:35 IST 2017 出现意外错误(类型 = 内部服务器错误,状态 = 500)。参数绑定的名称不能为 null 或为空!在 JDK < 8 上,您需要使用 @Param 来命名参数,在 JDK 8 或更高版本上,请务必使用 -parameters 进行编译。嵌套异常是 java.lang.IllegalArgumentException:参数绑定的名称不能为 null 或为空!在 JDK < 8 上,您需要使用 @Param 作为命名参数,在 JDK 8 或更高版本上,请务必使用 -parameters 进行编译。

演示.java

@Entity
public class Demo {

    @Id
    private Long id;
    private String name;
    private String value;
    //getter -setter
}
Run Code Online (Sandbox Code Playgroud)

演示应用程序.java

@SpringBootApplication
@RestController
public class DemoApplication {

    @Autowired
    private DemoRepository repository;

    @RequestMapping(method=RequestMethod.GET, value="/find/{id}/{name}/{value}")
    public Demo find(@PathVariable Long …
Run Code Online (Sandbox Code Playgroud)

java spring-data spring-data-jpa spring-boot

0
推荐指数
1
解决办法
2259
查看次数

JHipster 获取当前用户

我正在开发 JHipster 应用程序,我有一个 Study 实体,它与 User 具有多对一的关系(因此一个用户可以进行多项研究)。我正在尝试更改对话框组件中的用户选择以创建新研究以自动选择当前登录的用户。

我已更改选择,以便只有单个用户应显示为选择的选项,在解决此问题后,我将禁用该字段或将其删除,以便自动设置study.user

<select class="form-control" id="field_user" name="user [(ngModel)]="study.user" > 
    <option [ngValue]="user.id === study.user?.id ? study.user : user">{{user.login}}</option> 
</select>
Run Code Online (Sandbox Code Playgroud)

虽然查询了 userService:

this.userService.query() 
    .subscribe((res: ResponseWrapper) => { this.user = res.json; }, (res: ResponseWrapper) => this.onError(res.json)); 
Run Code Online (Sandbox Code Playgroud)

它运行这个查询到 user.service.ts 中的 api:

private resourceUrl = 'api/users';
...
query(req?: any): Observable<ResponseWrapper> {
    const options = createRequestOption(req);
    return this.http.get(this.resourceUrl, options)
        .map((res: Response) => this.convertResponse(res));
}
Run Code Online (Sandbox Code Playgroud)

UserResource.java 中的 GET 方法:

@GetMapping("/users")
@Timed
public ResponseEntity<UserDTO> getAllUsers() {
    return ResponseUtil.wrapOrNotFound(
        userService.getAllManagedUsers()
            .map(UserDTO::new));
} …
Run Code Online (Sandbox Code Playgroud)

spring spring-security spring-data-jpa jhipster angular

0
推荐指数
1
解决办法
5669
查看次数

如何为一对一关系编写 Spring JPA 查询?

我是 Spring JPA 的新手(或者说是在很长一段时间后研究它),我需要一些帮助来编写 JPA 存储库。我有一个实体类 Itinerary 和 User。两者之间是一对一的关系。

@Entity
@Table(name = "ITINERARY")
public class Itinerary implements Serializable {

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "Itinerary_IDGenerator", strategy = GenerationType.SEQUENCE)
    @SequenceGenerator(name = "Itinerary_IDGenerator", sequenceName = "Itinerary_IDGenerator", allocationSize = 1)
    private long id;

    @Basic(optional = false)
    @Column(nullable = false)
    @Temporal(TemporalType.DATE)
    private Date itineraryDate;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USER_ID")
    User user;
}

@Entity
@Table(name = "USER")
public class User implements Serializable {

    @Id
    @Column(name = "ID")
    @GeneratedValue(generator = "User_IDGenerator", strategy = GenerationType.SEQUENCE) …
Run Code Online (Sandbox Code Playgroud)

spring-data spring-data-jpa

0
推荐指数
1
解决办法
3356
查看次数