我很难找到问题的解决方案.
我有一个服务类,其中包含一个在登录时设置验证标志的方法.
@Service("userRolesService")
@Repository
@Transactional
public class UserRolesService {
public void verify() {
repository.verifyUser();
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库是一个SpringData CrudRepository,而verifyUser就是这样的
@Modifying
@Query("UPDATE user SET (verified = 1 WHERE verified=0)")
public void verifyUser();
Run Code Online (Sandbox Code Playgroud)
在单元测试中直接调用代码时,一切正常.通过应用程序从我的身份验证提供程序调用它时,我得到以下异常:
javax.persistence.TransactionRequiredException:执行更新/删除查询
使用@Autowired注释将Service类注入到我的单元测试和身份验证提供程序中.测试本身没有任何有趣的注释本身,认证提供者也没有.
我是新鲜的想法,所以如果有人有线索,我会非常感激.
编辑:我现在检索所有未验证的用户,设置验证标志并使用存储库的save()方法,而不是调用verifyUser更新脚本.这有效,但非常难看,所以我愿意接受更好的建议.
EDIT2:
这里的每个请求是配置的持久性部分,我想这是最相关的,其余只处理身份验证.此配置用于单元测试和Web应用程序,唯一的区别是数据源是嵌入式H2 DB用于单元测试,而mysql用于Web应用程序.
<beans [..]>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
depends-on="persistenceInitializer">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="jpa"/>
<property name="packagesToScan">
<list>
<value>com.example.model</value>
</list>
</property>
<property name="jpaVendorAdapter">
<bean class="com.example.persistence.adapter.ConfigurationRetainingHibernateJpaVendorAdapter">
<property name="database" value="${spring.hibernate.database}"/>
<property name="generateDdl" value="${spring.hibernate.generateDdl}"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.DefaultComponentSafeNamingStrategy
</prop>
</props>
</property>
</bean> …Run Code Online (Sandbox Code Playgroud) 可能重复:
在JPA查询中使用CURRENT_DATE的示例
我试图向我的存储库添加一个查询,以比较存储在数据库中的日期与当前日期.
我的查询是这样的:
@Query("Select c from Customer c where c.terminated != 1 or c.terminationDate > <currentDate>")
public List<Customer> getTerminatedCustomers();
Run Code Online (Sandbox Code Playgroud)
我可以插入<currentDate>什么?
如果一切都失败了,我可以在方法中添加一个参数,并将当前日期传递给查询.但如果可能的话,我宁愿选择更优雅的解决方案.
JSR-330根据包指定了某些命名约定,例如:
javax.inject.Inject
javax.inject.Scope
Run Code Online (Sandbox Code Playgroud)
Guice是JSR-330的参考实现.但是,在使用它时,您会注意到它不符合规范.例如:
com.google.inject.Inject
com.google.inject.Scope
Run Code Online (Sandbox Code Playgroud)
到目前为止我看到的任何参考实现都没有发生这种情况.是什么让Google Guice如此特别,以至于他们可以忽略他们正在实施的规范?
我们知道JSP被转换为Servlets,Servlet用于Buisines逻辑,JSP用于视图等.但从理论上讲,您可以使用servlet完成JSP所做的大部分工作.反之亦然.
但有没有什么可以用Servlet实现而不用JSP实现,反之亦然?
我在一次采访中得到了这个问题,但是经过大量的谷歌搜索没有找到任何答案.
它写在任何地方都不能覆盖静态方法,但是当我尝试减少访问说明符时,从public到protected,它会产生错误.例如
public class StaticOverrideFunda {
public static void foo(){
System.out.println("Parent Foo");
}
}
public class B extends StaticOverrideFunda{
protected static void foo(){
System.out.println("Child Foo");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
它说
无法降低继承方法的可见性
因此,它是遵循最重要的规则,为什么我们说foo没有在B类中被覆盖?为什么我们说它隐藏/阴影而不是覆盖?
我们的solaris机器出了问题,因为Java需要很长时间才能启动.即使是像java -version这样简单的东西
>time java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Server VM (build 16.3-b01, mixed mode)
real 0m34.084s
user 0m0.088s
sys 0m8.331s
Run Code Online (Sandbox Code Playgroud)
有趣的是,这仅限于Java6:
java version "1.5.0_24"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_24-b02)
Java HotSpot(TM) Server VM (build 1.5.0_24-b02, mixed mode)
real 0m0.320s
user 0m0.123s
sys 0m0.138s
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
作为输入参数,我可以有两种类型的String:
codeName=SomeCodeName&codeValue=SomeCodeValue
Run Code Online (Sandbox Code Playgroud)
要么
codeName=SomeCodeName
Run Code Online (Sandbox Code Playgroud)
没有codeValue.
codeName并且codeValue是关键.
如何使用正则表达式返回键的值?在这个例子中它只返回SomeCodeName和SomeCodeValue.
我正在使用jetty websocket包中的Outbound方法.
但是,出站变量名称在Netbeans中以斜体显示.这是什么意思?我应该避免使用这种方法吗?
这就是它在netbeans中出现的方式(为了清楚起见,我将斜体显示出来);
import org.eclipse.jetty.websocket.WebSocket.<i>Outbound</i>;
private <i>Outbound</i> mOutbound;
Run Code Online (Sandbox Code Playgroud) java ×6
jpa ×2
guice ×1
hibernate ×1
java-ee ×1
jsp ×1
jsr330 ×1
netbeans ×1
overriding ×1
regex ×1
servlets ×1
solaris ×1
spring-data ×1
spring-mvc ×1