我有一个名为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) 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是假的?
我们正在使用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读取消息,当我尝试解决此问题时,它会说明队列中有一些未提交的消息,哪个侦听器尝试读取并且无法进一步处理并自行挂起.
当从队列中手动删除该消息时,它会完美地处理其他消息.
那么如何跳过这些未提交的消息,以便系统可以继续下一条消息呢?
这个问题涉及 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) 我们正在使用 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问题
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条件假?
我需要在 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验证器在实体上使用注释从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) 我们使用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) 什么是YUI相当于以下JavaScript代码?
document.getElementById("myDiv").removeAttribute("id");
Run Code Online (Sandbox Code Playgroud) java ×5
hibernate ×3
spring ×2
avro ×1
emailrelay ×1
ibm-mq ×1
jakarta-mail ×1
javascript ×1
smtp ×1
spring-batch ×1
spring-jms ×1
spring-mvc ×1
yui ×1