在其中一个项目中,我们使用的是Spring Data.现在查询变得越来越复杂,我们考虑添加Spring Data Specification或QueryDSL.
但是,不确定前进的最佳方式.我认为他们都有同样的目的.是否推荐任何一个?
谢谢
我正在使用JAXB在Maven中使用JAXB插件从XSD生成bean.这工作正常,期望代码包含每个字段的isSetXXXXXX()方法.
例如
对于字段firstName,它产生以下代码:
@XmlElement(name = "FirstName", required = true)
protected String firstName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.token = firstName;
}
public boolean isSetFirstName() {
return (this.firstName!= null);
}
Run Code Online (Sandbox Code Playgroud)
这个isSetFirstName()方法导致了问题,我不希望JAXB生成这些问题.
有没有办法阻止这种行为?
谢谢.
UPDATE
解决了这个问题:问题出现在xjb文件中,generateIsSetMethod设置为true.
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings generateIsSetMethod="true">
bindingStyle="modelGroupBinding"
choiceContentProperty="true" >
<xjc:serializable uid="12343"/>
<jaxb:javaType name="short"
xmlType="xs:long"
printMethod="javax.xml.bind.DatatypeConverter.printShort"
parseMethod="javax.xml.bind.DatatypeConverter.parseShort"/>
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
Run Code Online (Sandbox Code Playgroud)
这也回答了我之前的问题.
我是Spring新手,我的要求是我不想用用户名和密码验证用户身份.用户通过身份验证是其他一些应用程序,我的应用程序通过以下详细信息获取请求:
我只是想使用Spring Security根据请求中的角色来保护页面.我已经考虑过编写UserDetailService,但是只添加请求数据,Spring仍然要求提供身份验证信息.然后我想到写下面的东西:
public class UserLogin {
/*
@Resource(name = "userDetailsService")
private UserDetailsService userDetailsService;
*/
@Resource(name = "authenticationManager")
private AuthenticationManager authenticationManager;
public boolean login(UserEntity user) {
//UserDetails ud = userDetailsService.loadUserByUsername(username);
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for (String role : user.getAuthorities()) {
authorities.add(new GrantedAuthorityImpl(role));
}
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword(), authorities);
try {
Authentication auth = authenticationManager.authenticate(token);
SecurityContext securityContext = new SecurityContextImpl();
// Places in ThredLocal for future retrieval
SecurityContextHolder.setContext(securityContext);
SecurityContextHolder.getContext().setAuthentication(auth);
} catch (AuthenticationException e) {
return false; …Run Code Online (Sandbox Code Playgroud) 我正在使用JBoss 5.1与Hibernate 3.6,JPA 2.0和Spring 3.0.5.我使用maven来构建EAR文件,如下所示:
AutoTrader.ear
-------> META-INF
--------------> application.xml
--------------> jboss-app.xml
--------------> MANIFEST.MF
-------> AutoTrader.war
Run Code Online (Sandbox Code Playgroud)
如果我在JBoss 5.1中部署这个ear文件,我会收到错误
org.springframework.dao.InvalidDataAccessApiUsageException: Not an entity: class uk.co.aol.shipmanager.domain.Manager; nested exception is ja
va.lang.IllegalArgumentException: Not an entity: class uk.co.aol.shipmanager.domain.Subscription
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:286) ~[at_war-1.0.war:3
.0.5.RELEASE]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104) ~[at_war-1.0.war:3.0.5.RELEASE
]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:368) ~[at_war-1.
0.war:3.0.5.RELEASE]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:58
) ~[at_war-1.0.war:3.0.5.RELEASE]
Run Code Online (Sandbox Code Playgroud)
但是,如果我部署war文件爆炸,它工作正常.欢迎任何建议.
谢谢,阿迪
更新:
我添加了一个ResourceScanner,它扩展了NativeScanner:
public class ResourceScanner extends NativeScanner {
@Override
public Set<Class<?>> getClassesInJar(final URL jarToScan,
final Set<Class<? extends Annotation>> annotationsToLookFor) {
return super.getClassesInJar(patchUrl(jarToScan), annotationsToLookFor);
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 目前我正在开发一个使用Spring web-service,hibernate和JAXb的项目.
1)我使用IDE'hibernate代码生成生成了hibernate bean,
2)另外,我使用maven编译器生成了jaxb bean.
..
现在,我的问题是,
1)这是正确的方法吗?(有这么多的豆子).
2)我应该使用JAXb bean来处理服务层吗?如何保持图层分离?
3)或者,我是否需要创建另一组bean,即.map(JAXb bean)到(新bean)到(hibernate bean)?
.
请说出你的看法?
谢谢,阿迪
我正在使用JBoss 5.1(EAP).我正在使用Spring webservices(3.0.5).对于编组我使用的是JaxB.
我正在使用maven.jaxb2.plugin从架构(xsd)生成pojo.
当我在JBoss上部署EAR时,我收到以下错误:
19:05:52,524 ERROR [[eventmanager-ws]] Allocate exception for servlet eventmanager-ws
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
javax.activation.DataHandler does not have a no-arg default constructor.
this problem is related to the following location:
at javax.activation.DataHandler
at protected javax.activation.DataHandler
uk.co.aol.shipmanager.ws.schema.ReportResponse.data
at uk.co.aol.shipmanager.ws.schema.ReportResponse
at public uk.co.aol.shipmanager.ws.schema.ReportResponse
uk.co.aol.shipmanager.ws.schema.ObjectFactory.createReportResponse()
at uk.co.aol.shipmanager.ws.schema.ObjectFactory
at com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.j>ava:102)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:302)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1136)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:277)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337) … 我使用石英、Spring 和 Hibernate 作为 JPA 提供程序。数据库是甲骨文。
我有一种方法可以将文件写入文件系统并使用详细信息更新数据库。可以通过两种方式调用此方法:
我已将石英设置为:
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" scope="singleton">
<property name="autoStartup" value="true"/>
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="overwriteExistingJobs" value="true"/>
<property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="transactionManager"/>
<property name="quartzProperties">
<props>
<prop key="org.quartz.scheduler.instanceName">FileScheduler</prop>
<prop key="org.quartz.scheduler.instanceId">AUTO</prop>
<prop key="org.quartz.jobStore.misfireThreshold">6000</prop>
<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
<prop key="org.quartz.jobStore.driverDelegateClass">${driverDelegateClass}</prop>
<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
<prop key="org.quartz.jobStore.isClustered">true</prop>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">5</prop>
<prop key="org.quartz.threadPool.threadPriority">5</prop>
</props>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
这种方法是使用 spring 管理的事务。
问题是当这个方法被石英调度器调用时,文件被创建但数据库没有更新(应该有两个表更新和一个表插入)。
我也启用了 hibernate show_SQL,但在调度程序的情况下,不会记录更新\插入语句。
尽管当 Web 服务请求调用此方法时,这可以正常工作。日志也显示更新\插入语句。
更新 1
总结我的问题,这就是我想要实现的目标:
最后,我希望所有表格都得到更新。 …
我想在Eclipse中使用JBoss工具从DDL生成java代码.我使用以下内容:Oracle XE Eclipse Helios(SpringSource版本)JBoss Tools
我已经配置了hibernate.cfg.xml(如下所示)并创建了一个示例应用程序来插入和更新XE中的记录,它工作正常.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
<property name="hibernate.connection.username">admin</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.default_schema">users</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="users.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
但是当我选择(在hibernate透视图中)File-> New-> Hibernate控制台配置时,我在"Hibernate Configurations"窗口中得到以下内容:
-Console
+Configuration
+Session Factory
+Database
Run Code Online (Sandbox Code Playgroud)
扩展上面的"数据库"显示"待定"几秒钟,然后什么都不显示.我希望它能显示表名.我正在努力找出原因.任何日志文件中都没有例外\错误,控制台上没有任何内容,所有XE服务都在运行,hibernate配置正确,因为我的示例应用程序正常工作.
在创建"控制台配置"时,我创建了一个新的数据库连接并完成了"测试连接"并显示"Ping成功"消息.我在配置中使用了以下内容:
hibernate.connection.url jdbc:oracle:thin:@localhost:1521:xe
hibernate.dialect org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class oracle.jdbc.OracleDriver
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.谢谢.
有两种方法:
Run Code Online (Sandbox Code Playgroud)String salary = company.getPerson(id).getData().getSalary(); String postcode = company.getPerson(id).getData().getPostCode();
要么
Run Code Online (Sandbox Code Playgroud)Data data = company.getPerson(id).getData(); String salary = data.getSalary(); String postcode = data.getPostCode();
哪种方式首选,为什么?除了可读性之外还有什么好处?
我下面有两节课。两者都有一个带有 getter 的变量“回复”。此变量没有设置方法。唯一的区别是在 ClassOne 中,变量是 static final 的。
那么有什么区别,哪个更受欢迎?
public class ClassOne {
private static final String reply = "Success";
..
public String getReply() {
return reply;
}
// no setter
}
Run Code Online (Sandbox Code Playgroud)
和 2 类
public class ClassTwo {
private String reply = "Success";
..
public String getReply() {
return reply;
}
// no setter
}
Run Code Online (Sandbox Code Playgroud)
更新1:
我想知道的是,当变量没有setter时,是否应该将变量声明为static final以进行优化?还是没关系?