小编ami*_*que的帖子

Spring JpaRepository - 分离和附加实体

我正在使用spring boot并在jpa上休眠.我正在使用JpaRepository接口来实现我的存储库.与以下UserRepository一样

public interface UserRepository extends JpaRepository<User, Long> {
}
Run Code Online (Sandbox Code Playgroud)

我想实现以下目标

  1. 加载用户实体.
  2. 更改实体对象的状态,例如user.setName("foo")
  3. 进行外部系统Web服务调用.将呼叫结果保存在DB中
  4. 仅在成功响应此Web服务调用时,将新用户状态保存在存储库中.

以上所有步骤都不会发生在一个事务中,即外部服务调用不在事务中.

当我通过其存储库将我的Web服务结果保存在DB中时,我的用户实体更改也会保存.根据我的理解,这是由于在步骤#3中刷新了持久性上下文.在一些谷歌之后,我认为我可以实现我的目的,如果我可以在第一步分离我的用户实体并在步骤4重新连接它.请确认如果我的理解是正确的,我怎么能做到这一点?JpaRepository接口中没有用于分离实体的方法.

以下是代码来说明

public void updateUser(int id, String name, int changeReqId){
    User mUser = userRepository.findOne(id); //1
    mUser.setName(name); //2

    ChangeRequest cr = changeRequestRepository.findOne(changeReqId);
    ChangeResponse rs = userWebService.updateDetails(mUser); //3

    if(rs.isAccepted()){
        userRepository.saveAndFlush(mUser); //4
    }

    cr.setResponseCode(rs.getCode());
    changeRequestRepository.saveAndFlush(cr); //this call also saves the changes at step 2
}
Run Code Online (Sandbox Code Playgroud)

谢谢

java spring hibernate jpa spring-data-jpa

22
推荐指数
3
解决办法
4万
查看次数

emberjs无法克隆未实现Ember.Copyable的Ember.Object

我使用的是ember 1.3.1和ember-data 1.0.0-beta.5.在创建新模式时,我收到以下错误

断言失败:无法克隆未实现Ember.Copyable的Ember.Object

以下是我的型号代码

App.myModel = DS.Model.extend({name:DS.attr('string'),age:DS.attr('string')});

在我的创建路线模型功能

return Em.Object.create({});

最后保存我做了以下

this.store.createRecord('property',this.get('model'));

尽管出现错误,但我的后端服务已成功调用并保存了新模型.

请指导.

谢谢

ember.js ember-data

16
推荐指数
2
解决办法
6802
查看次数

Spring boot + Hibernate + JPA没有事务性的EntityManager可用

我使用Spring引导1.2.3.RELEASE版本与JPA over hibernate.我遇到以下异常

org.springframework.dao.InvalidDataAccessApiUsageException: No transactional EntityManager available; nested exception is javax.persistence.TransactionRequiredException: No transactional EntityManager available
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:410) ~[EntityManagerFactoryUtils.class:4.1.6.RELEASE]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:223) ~[HibernateJpaDialect.class:4.1.6.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:417) ~[AbstractEntityManagerFactoryBean.class:4.1.6.RELEASE]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:59) ~[ChainedPersistenceExceptionTranslator.class:4.1.6.RELEASE]
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:213) ~[DataAccessUtils.class:4.1.6.RELEASE]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:147) ~[PersistenceExceptionTranslationInterceptor.class:4.1.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [ReflectiveMethodInvocation.class:4.1.6.RELEASE]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor.java:122) ~[CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodIntercceptor.class:na]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [ReflectiveMethodInvocation.class:4.1.6.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92) [ExposeInvocationInterceptor.class:4.1.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [ReflectiveMethodInvocation.class:4.1.6.RELEASE]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) [JdkDynamicAopProxy.class:4.1.6.RELEASE]
at com.sun.proxy.$Proxy110.deleteByCustomerId(Unknown Source) ~[na:na]

Caused by: javax.persistence.TransactionRequiredException: No transactional EntityManager available
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:275) ~[SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.class:4.1.6.RELEASE]
at com.sun.proxy.$Proxy102.remove(Unknown Source) ~[na:na]
at org.springframework.data.jpa.repository.query.JpaQueryExecution$DeleteExecution.doExecute(JpaQueryExecution.java:270) ~[JpaQueryExecution$DeleteExecution.class:na]
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:74) ~[JpaQueryExecution.class:na]
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:97) ~[AbstractJpaQuery.class:na]
at …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate jpa spring-boot

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

Spring事务边界和DB连接保持

我正在使用spring boot并使用tomcat连接池在jpa上休眠.能帮我理解spring在事务处理中如何使用数据库连接.例如,考虑以下场景:

  1. 我们有2个连接的数据库连接池.
  2. Spring启动一个事务,即用@Transactional注释修饰的调用方法.
  3. 此方法执行数据库更新
  4. 调用外部服务
  5. 当从外部服务收到响应时,它会更新DB并返回.
  6. Spring提交交易

假设外部服务(步骤4)需要1分钟才能完成,数据库池中将有多少个DB连接可用?假设spring保持DB连接,直到事务完成,在此期间收到的任何请求只有1个DB连接可用,如果我们收到多个请求,则必须等待DB连接.

请确认我的理解,如果它是正确的,请建议我如何在高交易量系统中处理这种情况.

谢谢

java spring hibernate jpa transactions

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

在命令行和apache中的不同版本的PHP

我使用mac 10.8,我已经安装了PHP 5.5.在命令行php -v show version 5.5.但是当我使用phpinfo()启动mac的apache服务器时,它会显示版本5.4.

任何人都可以帮我如何使Apache使用5.5版

谢谢

php macos apache2

9
推荐指数
2
解决办法
8677
查看次数

Windows 10中的Docker代理传播到容器无法正常工作

我支持在Windows 10上合作代理和运行docker.我已根据此处文档在 docker上设置代理.

我的docker代理设置

我能够提取图像,但这些代理设置不会传播到容器,例如当我运行alpine env时,它不会显示代理配置.以下是我的输出

? docker run alpine env                                          
  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  HOSTNAME=14fca5bee12f                                            
  HOME=/root                                                       
Run Code Online (Sandbox Code Playgroud)

以下是根据文档的预期输出.

检测输出

在构建以下docker文件时,我从alpine容器中获取连接错误

Docker版本

Docker version 17.12.0-ce, build c97c6d6
Run Code Online (Sandbox Code Playgroud)

DockerFile

FROM alpine:latest
ADD HelloWorld.class HelloWorld.class
RUN apk --update add openjdk8-jre
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "HelloWorld"]
Run Code Online (Sandbox Code Playgroud)

错误

Step 3/4 : RUN apk --update add openjdk8-jre                                                                      
 ---> Running in 1205b24d5044                                                                                     
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz                                       
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/main: could not connect to server (check repositories file)      
WARNING: Ignoring APKINDEX.70c88391.tar.gz: No such file or directory                                             
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz                                  
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.7/community: could not connect to …
Run Code Online (Sandbox Code Playgroud)

proxy containers docker windows-10

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

Spring Boot 将 JAX-WS webservice 注册为 bean

在我的基于 spring boot ws 的应用程序中,我按照契约优先的方法创建了一个 jax-ws 网络服务。Web 服务已启动,但我无法在我的 Web 服务中自动装配其他 bean。

我如何将 spring 中的 webservice 定义为 bean?

以下是我的 webservice impl 类:

@WebService(endpointInterface = "com.foo.bar.MyServicePortType")
@Service
public class MySoapService implements MyServicePortType {
    @Autowired
    private MyBean obj;

    public Res method(final Req request) {
        System.out.println("\n\n\nCALLING.......\n\n" + obj.toString()); //obj is null here
        return new Res();
    }
}
Run Code Online (Sandbox Code Playgroud)

MyServicePortType 由 maven 从 wsdl 文件生成

当我调用这个服务(通过 SoapUi)时,它给出了NullPointerException因为 MyBean 对象不是自动装配的。

由于我的应用程序是基于 Spring Boot 构建的,因此没有 xml 文件。目前我有sun-jaxws.xml带有端点配置的文件。如何在 Spring Boot 应用程序中进行以下配置

<wss:binding url="/hello">
    <wss:service>
        <ws:service …
Run Code Online (Sandbox Code Playgroud)

java spring web-services jax-ws spring-boot

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

Easymock模拟输入流读取操作

我想用easymock测试以下代码.我已经创建了模拟套接字和模拟输入流,但我无法模拟读取方法.谁能帮帮我吗

byte[] lenbuf = new byte[2];
sock.getInputStream().read(lenbuf);
Run Code Online (Sandbox Code Playgroud)

我正在尝试跟进我的单元测试

InputStream mockInputStream = createMock(InputStream.class);
expect(mockInputStream.read(new byte[2])).andReturn(2);
replay(mockInputStream);
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误

  Unexpected method call InputStream.read([0, 0]):
  InputStream.read([0, 0]): expected: 1, actual: 0
Run Code Online (Sandbox Code Playgroud)

谢谢

java unit-testing easymock

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

修改Eclipse equals()方法模板

eclipse生成的equals()方法对于if结构没有{}.例如

public boolean equals(Object obj) {
    if (this == obj)
        return true;
    .........
    return true;
}
Run Code Online (Sandbox Code Playgroud)

如何更改以在以下模式中生成代码

public boolean equals(Object obj) {
    if (this == obj){
        return true;
    }
    .........
    return true;
}
Run Code Online (Sandbox Code Playgroud)

java eclipse

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

Spring自定义注释集成测试

在我的所有Itegration测试中,我必须添加以下注释

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:test-context.xml")
@Transactional
Run Code Online (Sandbox Code Playgroud)

我在想是否可以创建一个自定义注释来将上述注释分组,而不是添加3个注释,我只能添加一个。为此,我创建了以下注释。

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration("classpath:test-context.xml")
public @interface IntegrationTest {
  String[] value() default {};
}
Run Code Online (Sandbox Code Playgroud)

但是,当我添加@IntegrationTest测试类时,它不会加载上下文。谁能指导我所缺少的吗?

谢谢

java spring annotations spring-mvc

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