小编adi*_*adi的帖子

Spring数据规范或QueryDSL

在其中一个项目中,我们使用的是Spring Data.现在查询变得越来越复杂,我们考虑添加Spring Data Specification或QueryDSL.

但是,不确定前进的最佳方式.我认为他们都有同样的目的.是否推荐任何一个?

谢谢

spring specifications querydsl spring-data

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

JAXB Bean生成

我正在使用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)

这也回答了我之前的问题.

java schema xsd jaxb

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

Spring 3.0安全性 - 使用身份验证进行授权

我是Spring新手,我的要求是我不想用用户名和密码验证用户身份.用户通过身份验证是其他一些应用程序,我的应用程序通过以下详细信息获取请求:

  1. 用户名
  2. 角色

我只是想使用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)

spring-security

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

JBoss 5.1:找不到实体类(vfszip)

我正在使用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)

jboss spring hibernate

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

JAXb,Hibernate和bean

目前我正在开发一个使用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)?

.

请说出你的看法?

谢谢,阿迪

java hibernate jaxb

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

JBoss:JaxB DataHandler兼容性

我正在使用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) …

jboss spring-ws jaxb

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

Quartz 与 Spring 未提交

我使用石英、Spring 和 Hibernate 作为 JPA 提供程序。数据库是甲骨文。

我有一种方法可以将文件写入文件系统并使用详细信息更新数据库。可以通过两种方式调用此方法:

  1. 使用网络服务
  2. 或者,作为预定的 quatrz 作业。

我已将石英设置为:

<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

总结我的问题,这就是我想要实现的目标:

  1. 在员工表中创建一条新记录。
  2. 将employee_id 保存在job_store(石英)中。
  3. 当触发器被触发时,quartz 返回employee_id
  4. 根据此键检索(加载)员工记录。
  5. 向员工发送电子邮件
  6. 更新状态为“已发送”的通知(插入语句)

最后,我希望所有表格都得到更新。 …

spring hibernate jpa quartz-scheduler

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

Eclipse - JBoss(Hibernate)工具没有显示任何表

我想在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)

任何帮助表示赞赏.谢谢.

eclipse oracle jboss hibernate

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

实例变量上的Java调用方法

有两种方法:

 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();
Run Code Online (Sandbox Code Playgroud)

哪种方式首选,为什么?除了可读性之外还有什么好处?

java coding-style

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

Java 代码静态最终变量用法

我下面有两节课。两者都有一个带有 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以进行优化?还是没关系?

java static final

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