小编Nei*_*ton的帖子

Spring @Transactional只读

我有一个基本的SpringBoot应用程序.使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行的JAR文件

有这种依赖性

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我创建了这个声明为readOnly的服务:

@Service
@Transactional(readOnly = true)
public class TimeLapseService {

    @Autowired
    TimeLapseRepository timeLapseRepository;

    public Set<TimeLapse> findAllByCompanyId(long companyId) {
        return timeLapseRepository.findAllByCompanyId(companyId);
    }

    public Iterable<TimeLapse> findAll (User user) {

        if (user.isAdmin()) {
            return timeLapseRepository.findAll();
        } else {
            return timeLapseRepository.findAllByCompanyId(user.getCompany().getId());
        }   

    }

    public void createTimeLapse (TimeLapse timeLapse) {
        timeLapseRepository.save (timeLapse);
    }

}
Run Code Online (Sandbox Code Playgroud)

public interface TimeLapseRepository extends CrudRepository<TimeLapse, Long> {
....
}
Run Code Online (Sandbox Code Playgroud)

据我所知,由于服务被声明为readonly,因此创建新服务不应该向DB保留任何内容,但它会在TABLE中创建一行

timeLapseService.createTimeLapse(timeLapse24h);
Run Code Online (Sandbox Code Playgroud)

JPA属性:

spring.datasource.url=jdbc:h2:mem:testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
hibernate.dialect=org.hibernate.dialect.H2Dialect
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-data-jpa spring-boot

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

如何在 QueryDSL 中为多对多关系创建谓词布尔表达式

如何使用 Predicate BooleanExpression 对多对多关系进行内连接?

我有 2 个实体

public class A {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer id;

 @ManyToMany(fetch = FetchType.LAZY,
  cascade = { CascadeType.DETACH, CascadeType.MERGE, 
      CascadeType.REFRESH, CascadeType.PERSIST})
  @JoinTable(name = "a_b_maps",
      joinColumns = @JoinColumn(name = "a_id", nullable = 
          false,referencedColumnName = "id"),
      inverseJoinColumns = @JoinColumn(name = "b_id", nullable = false, 
        referencedColumnName = "id")
  )
  private Set<B> listOfB = new HashSet<B>();
}


public class B {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer id;

 @ManyToMany(fetch = FetchType.LAZY,
  cascade = { CascadeType.DETACH, CascadeType.MERGE, 
      CascadeType.REFRESH, …
Run Code Online (Sandbox Code Playgroud)

spring predicate jpql querydsl spring-data-jpa

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

如何在@ManyToOne JPA 中停止重复对象?

我的父类:

@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private List<Child> child;

public List<Child> getChild() {
    return child;
}

public void setChild(List<Child> child) {
    this.child = child;
}
Run Code Online (Sandbox Code Playgroud)

我的孩子类:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "REF_ID")
private Parent parent;

public Parent getParent() {
    return parent;
}

public void setParent(Parent parent) {
    this.parent = parent;
}
Run Code Online (Sandbox Code Playgroud)

错误 :

Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:626) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:211) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109) ~[tomcat-embed-core-8.5.15.jar:8.5.15]
at org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$SpelView.render(ErrorMvcAutoConfiguration.java:227) ~[spring-boot-autoconfigure-1.5.4.RELEASE.jar:1.5.4.RELEASE]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286) ~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE] …
Run Code Online (Sandbox Code Playgroud)

java json hibernate jackson spring-boot

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

对于JSF JPA中的可选字段,使大小验证器忽略null?

假设我有一个带有文本字段的表,名为player,它是null.所以允许空值,但如果不是null(有一个值),文本/字符串的大小必须在10到100之间.我有这个开始:

@Column(name = "player", nullable = true)
@Size(min = 5, max = 100)
private String player;
Run Code Online (Sandbox Code Playgroud)

但是当将字段设置为null时,JSF页面会抛出验证错误.

有没有办法让Size验证器忽略空值?

java validation jsf bean-validation wildfly

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

无法加载com.mchange.v2.resourcepool.BasicResourcePool $ 1DestroyResourceTask.java.lang.IllegalStateException

我正在使用移动Web应用程序,对于我正在使用的数据库部分Hibernate和连接池c3p0,当我在开始运行应用程序时它工作正常,但在做了一些事务,如选择,保存,更新,我得到以下异常,我不知道为什么会发生这种情况,

Sep 22, 2015 12:40:06 PM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1562)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:1040)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1507)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1477)
    at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1565)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:2089)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at …
Run Code Online (Sandbox Code Playgroud)

java hibernate c3p0

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

对于创建表查询,query.executeUpdate()在hibernate中返回什么

String sql="create table temptable (name varchar(2 Byte))";
    Transaction tx=session1.beginTransaction();
    Query query=session1.createSQLQuery(sql);
    int a=query.executeUpdate();

    System.out.println(a);tx.commit();
Run Code Online (Sandbox Code Playgroud)

为什么即使在成功创建表后也使用删除表查询,它仍打印0。而说明它返回更新或删除的实体数,而不返回1?

hibernate

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

从数据库加载数据时发生 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
查看次数

Spring JPA只返回字段,而不返回实体

我有一个Query-annotated Spring JPA repo,它看起来像这样:

@Repository
public interface MainRepository 
extends 
    JpaRepository<MainEntity, MainEntity.ID>, 
    JpaSpecificationExecutor<MainEntity> {

    @Query("select e.start, e.finish,e.forename,e.surname from MainEntity e where e.volunteerId= :id "
        + "and e.areaId>0 and e.isAssignment=true order by e.start")
    List<MainEntity> findAssignments(@Param("id") int volunteerId);
}
Run Code Online (Sandbox Code Playgroud)

但是,尽管返回类型,但不会返回MainEntity对象列表.它返回与所请求的字段类型对应的List of Object [].

这是怎么回事???

java spring jpql spring-data-jpa

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