小编Rah*_*wal的帖子

Hibernate Criteria Query with Group By和aliasToBean

我有一个名为SaleRecord的表/实体,其字段如

@Entity
public class SaleRecord {
   private Long id;
   private String type;
   private Double amount;
   //Getter and Setter and more fields
}
Run Code Online (Sandbox Code Playgroud)

我想用Criteria写下面的查询

SELECT s.type AS accountName, SUM(s.amount) AS amount 
FROM salerecord s
GROUP BY s.type
Run Code Online (Sandbox Code Playgroud)

我在Hibernate中使用纯SQL编写(其工作)

String sql = " SELECT s.type AS accountName, SUM(s.amount) AS amount ";
            sql += " FROM salerecord s ";
            sql += " GROUP BY s.type ";

List<CollectionDO> incomeList = (List<CollectionDO>) getSession().createSQLQuery(sql).setResultTransformer(Transformers.aliasToBean(CollectionDO.class)).list();
Run Code Online (Sandbox Code Playgroud)

CollectionDO是另一个POJO类,我想在其中填充结果.

但是想要使用标准编写,那么如何编写此查询并将结果转换为CollectionDO类.我试过以下但没有工作

Criteria criteria = getSession().createCriteria(SaleRecord.class).setResultTransformer(Transformers.aliasToBean(CollectionDO.class));
        criteria.setProjection(Projections.property("type"));
        criteria.setProjection(Projections.sum("amount"));        
        criteria.setProjection(Projections.groupProperty("type"));
        return (List<CollectionDO>) criteria.list(); …
Run Code Online (Sandbox Code Playgroud)

java hibernate

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

Java中的NaN Constant Magic

可能重复:
为什么Double.NaN == Double.NaN返回false?

NaN ="NaN"代表"不是数字".如果浮点运算有一些输入参数导致操作产生一些未定义的结果,则会产生"Nan".例如,0.0除以0.0是算术上未定义的.取负数的平方根也是不确定的.

我试图在Java中使用NaN Constant

public class NaNDemo {
    public static void main(String s[]) {
        double x = Double.NaN;
        double y = Double.NaN;

        System.out.println((x == y));
        System.out.println("x=" + x);
        System.out.println("y=" + y);
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

false
x=NaN
y=NaN
Run Code Online (Sandbox Code Playgroud)

那么为什么x == y是假的?

java

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

Websphere 7 + Websphere MQ 7.X + Spring Integration + JMS - 消息侦听器停止从Queue读取消息

我们正在使用JMS和Spring Integration从Websphere MQ读取消息.

<task:executor id="demoMessageReceiverChannelTE" pool-size="1-3" queue-capacity="5" keep-alive="1" rejection-policy="CALLER_RUNS"/>

<int:channel id="demoMessageReceiverChannel">
    <int:dispatcher task-executor="demoMessageReceiverChannelTE"/>
    <int:interceptors>
        <int:ref bean="messageReceiverInterceptor" />
    </int:interceptors>
</int:channel>

<jms:message-driven-channel-adapter
id="demoMesssageReceiverAdapter" channel="demoMessageReceiverChannel"
connection-factory="srcJmsConnectionFactory" destination="srcReceiverQueue"
error-channel="errorChannel" message-converter="demoIncomingMessageConverter"
transaction-manager="srcJmsTransactionManager" send-timeout="65000"
header-mapper="demoJmsHeaders" />
Run Code Online (Sandbox Code Playgroud)

还有另一个系统,它将消息放在此队列上.(超出我们的范围)

我们可以在队列中一次读取2000条消息.

有时,Message Listener会停止从Queue读取消息,当我尝试解决此问题时,它会说明队列中有一些未提交的消息,哪个侦听器尝试读取并且无法进一步处理并自行挂起.

当从队列中手动删除该消息时,它会完美地处理其他消息.

那么如何跳过这些未提交的消息,以便系统可以继续下一条消息呢?

spring-integration spring-jms ibm-mq

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

Avro 架构和生成的文件中的十进制数据类型支持

这个问题涉及 Avro 1.8.1 版。

我们的 AVRO 架构中有以下字段:

"name" : "sale_price", 
"type" : ["bytes", "null"], 
"logicalType": "decimal", 
"precision": 18, 
"scale": 17,
Run Code Online (Sandbox Code Playgroud)

如您所见,该字段的 logicalType 已定义为decimal

但是当我们使用 时avro-maven-plugin,它不会在生成的 Java 源文件中生成正确的数据类型。相反,它生成,java.nio.ByteBuffer。您将如何在 Java 文件中生成正确的数据类型?

这是我们的插件配置:

<plugin>
    <groupId>org.apache.avro</groupId>
    <artifactId>avro-maven-plugin</artifactId>
    <version>1.8.1</version>
    <configuration>
        <stringType>String</stringType>
        <enableDecimalLogicalType>true</enableDecimalLogicalType>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

java avro

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

从 Java 应用程序发送电子邮件的异常:中继被拒绝

我们正在使用 Spring Mail 从 java 应用程序 org.springframework.mail.javamail.JavaMailSenderImpl 发送电子邮件

Spring电子邮件配置是

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" autowire-candidate="default">
        <property name="host" value="${test.email.host}" />
        <property name="port" value="${test.email.port}" />
        <property name="username" value="${test.email.username}" />
        <property name="password" value="${test.email.password}" />
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>

            </props>
        </property>
    </bean>
Run Code Online (Sandbox Code Playgroud)

Java代码快照是

    @Autowired(required = true)
    @Qualifier("errorMessageMailSender")
    JavaMailSenderImpl mailSender;

    ..............
    ..............

          try {
                MimeMessage mailMessage = buildEmailMimeMessage(properties,mimeMultipart);
                logger.info(String.format("Built MimeMessage object is <%s>",mailMessage));
                if (mailMessage != null) {
                    mailSender.send(mailMessage);
                    logger.info("Mail sent Successfully");
                }else{
                    logger.info("Mail send failed as Mail message object construction failed.");
                }
                result=true;
            } catch …
Run Code Online (Sandbox Code Playgroud)

java spring smtp jakarta-mail emailrelay

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

比较2个整数值会给出不同的输出

可能重复:
关于自动装箱和对象相等/身份的Java问题

Integer i1 = 10;
Integer i2 = 10;
Integer i3 = 210;
Integer i4 = 210;

if(i1 ==i2){
      System.out.println("True");
}else{
      System.out.println("False");
}
if(i3==i4){
       System.out.println("True");
}else{
       System.out.println("False");
}
if(Integer.valueOf(10) ==Integer.valueOf(10)){
       System.out.println("True");
}else{
      System.out.println("False");
}
if(Integer.valueOf(210) ==Integer.valueOf(210)){
       System.out.println("True");
}else{
       System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)

答案是

真正

真正

为什么它给2和4条件假?

java

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

使用附加列休眠多对多映射?

我需要在 manytomany 生成的表中有额外的列

有 2 个实体相互关联,多对多(用户多对多组)

@Entity
public class User {
    //other fields
    private Set<Group> groups = new HashSet<Group>(0);
}

@Entity
public class Group {
    //other fields
    private Set<User> users = new HashSet<User>(0);
}
Run Code Online (Sandbox Code Playgroud)

所以在这里它在数据库中生成 3 个表作为

表 1 - 用户

表 2 - 组

表 3 - 用户组

现在我需要 UserGroup 表中的其他字段,那么如何指定该字段以及在哪个实体中指定?

附加字段将是

私有布尔值 isThisUserIsGroupManager;

这样,我可以让该组的用户也是组管理员。

hibernate

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

Hibernate Validator抛出异常"找不到类型为:java.math.BigDecimal的验证器"

我正在使用hibernate验证器在实体上使用注释从Spring MVC进行验证.

我的实体中有一个BigDecimal属性,我需要检查范围值验证.如下

@NotNull(message = "errors.range_1_5_Trades.mandatory")
@Pattern(regexp = "(^$[0-9])", message = "errors.only.numbersAllowed")
@Range(min = 1, max = 5, message = "errors.invalid.range")
@Column(name = "FEE_LESS_THAN_5")
private BigDecimal feeLessThan_5;
Run Code Online (Sandbox Code Playgroud)

但是当我在Spring Controller中使用@Valid注释验证它时,它会抛出异常,如下所示

javax.validation.UnexpectedTypeException: No validator could be found for type: java.math.BigDecimal
    at org.hibernate.validator.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:383)
    at org.hibernate.validator.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:364)
    at org.hibernate.validator.engine.ConstraintTree.getInitializedValidator(ConstraintTree.java:313)
    at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:144)
    at org.hibernate.validator.engine.ConstraintTree.validateConstraints(ConstraintTree.java:117)
    at org.hibernate.validator.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:84)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:452)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:397)
    at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:361)
    at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:313)
    at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:139)
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:86)
    at org.springframework.validation.DataBinder.validate(DataBinder.java:711)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:807)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669) …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-mvc hibernate-validator

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

Spring Batch - 读取csv并使用跳过/异常策略将数据转储到表中

我们使用Spring Batch从CSV文件中读取记录并插入到数据库表中.

数据源和事务管理器

<!-- connect to database -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="**********" />
        <property name="username" value="**********" />
        <property name="password" value="**********" />
    </bean>

    <bean id="transactionManagerTest"
        class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
Run Code Online (Sandbox Code Playgroud)

JOB配置

<!-- stored job-meta in database -->
    <bean id="jobRepository"
        class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManagerTest"  />
        <property name="databaseType" value="Oracle" />
    </bean>


<bean id="jobLauncher"
        class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository" />
        <property name="taskExecutor"> 
        <bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
          </property> 
    </bean>
Run Code Online (Sandbox Code Playgroud)

下面是弹簧批处理作业配置

<batch:job id="reportJob">
        <batch:step id="step1" >
            <batch:tasklet transaction-manager="transactionManagerTest" >
                <batch:chunk reader="cvsFileItemReader" …
Run Code Online (Sandbox Code Playgroud)

spring spring-batch

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

YUI相当于removeAttribute()JavaScript方法

什么是YUI相当于以下JavaScript代码?

document.getElementById("myDiv").removeAttribute("id");
Run Code Online (Sandbox Code Playgroud)

javascript yui

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