小编JMM*_*JMM的帖子

在JPA实体中自动设置createdBy和updatedBy

我正在开发一个JPA(Hibernate实现),Spring和Stripes Web应用程序.我有许多JPA实体,它们具有以下共同的审计和查询字段:

createdBy - 创建实体的人员的用户ID.createdOn - 创建实体的日期updatedBy - 上次更新实体的人员的用户ID updatedOn - 实体上次更新的日期

我有我的应用程序工作,以便在实体持久化时自动设置createdOn和updatedOn但我不知道如何填充createdBy和updatedBy字段而不必一直通过当前登录用户的ID从控制器类到DAO.

有没有人有任何关于如何在不通过所有地方传递用户ID的情况下这样做的建议?请注意,当前用户ID目前存储在HttpSession对象中,因此我的后端需要以某种方式访问​​此数据...

谢谢!

spring stripes hibernate jpa

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

在Hibernate Criteria查询中合并等效?

我想将以下查询编写为Hibernate Criteria查询:

   select 
      to_char(nvl(ol.updated_datetime, ol.created_datetime), 'dd/mm/yyyy'), sum(discount_price)
   from order_line ol
   where nvl(ol.updated_datetime, ol.created_datetime) between to_date('05-may-10') and to_date('30-may-10') 
   group by to_char(nvl(ol.updated_datetime, ol.created_datetime), 'dd/mm/yyyy')
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将nvl函数转换为Criteria查询等价物.我意识到HQL有一个coalesce表达式,但我想把它写成Criteria查询.

任何建议都会非常感激!

编辑:如果任何人都可以提供执行上述操作的HQL查询,也可以作为我的解决方案.

sql hibernate criteria coalesce nvl

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

基于Java的高容量事务Web应用程序

我几乎没有处理大量交易网站的经验,最近遇到了这个有趣的问题.我有兴趣知道Java Web应用程序中的瓶颈会在高负载(每秒数千个请求)下发生.如果有人能给我一个高级别的方法来思考以下问题,那就太棒了!

我唯一想到的是使用memcached来缓存数据库查找,但我不知道如何计算每个请求将花费的时间量,因此系统可能能够计算每秒的请求数量处理.

问题: 必须设计Internet规模的应用程序来处理大量事务.描述一个系统的设计,该系统必须每秒平均处理30,000个HTTP请求.对于每个请求,系统必须使用通过URL查询字符串传入的关键字查找5000万字的字典.每个响应都包含一个包含单词定义(100字节或更少)的字符串.

描述系统的主要组件,并注意哪些组件应该是定制的,哪些组件可以利用第三方应用程序.包括每个组件的硬件估计.请注意,设计应包括最低的硬件/软件许可成本.

记录提出估算的理由.

描述如果定义为10千字节,设计将如何变化.

java performance requests-per-second

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

在JSP中引用Java的最佳实践

我要求在JSP中引用Java代码(在我的例子中是枚举值)的一些意见.

我目前在JSP中有条件逻辑,如:

<c:if test="${actionBean.order.status eq 'complete'}">    
    show some stuff
</c:if>
Run Code Online (Sandbox Code Playgroud)

现在,'complete'是与我的代码库中的枚举相关联的值.在我的JSP中引用枚举会更好吗?如果是这样,怎么样?

我认为这可能是一件好事,因为:如果枚举发生变化,那么JSP就不会中断.

将Java代码混合到JSP中是不好的做法?或者复制'完整'的值更糟糕?

提前致谢.

java jsp

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

使用DbUnit将BigDecimal数据放入HSQLDB测试数据库

我在我的后端使用Hibernate JPA.我正在使用JUnit和DBUnit编写单元测试,以将一组数据插入到内存中的HSQL数据库中.

我的数据集包含:

<order_line order_line_id="1" quantity="2" discount_price="0.3"/>
Run Code Online (Sandbox Code Playgroud)

它映射到OrderLine Java对象,其中discount_price列定义为:

@Column(name = "discount_price", precision = 12, scale = 2)
private BigDecimal discountPrice;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的测试用例并声明返回的折扣价格等于0.3时,断言失败并表示存储的值为0.如果我将数据集中的discount_price更改为0.9,则它会向上舍入为1.

我已经检查过以确保HSQLDB没有进行舍入,这肯定不是因为我可以使用类似5.3的值的Java代码插入订单行对象并且它工作正常.

对我来说,似乎DBUtils由于某种原因舍入了我定义的数字.有没有办法可以迫使这种情况发生?任何人都可以解释为什么它可能这样做?

谢谢!

testing dbunit hibernate hsqldb

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

学习函数式编程

我主要是一名Java开发人员,这是我最有经验的地方.我想提高我的编码技能,所以我正在学习一门功能语言.

我不希望它对我来说太大了,我不想陷入太多陌生的事情中,我想尽快加快速度.

您是否可以推荐一种语言/平台,以便我第一次认真看待函数式编程?

java functional-programming

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

如何编写单元测试来覆盖抛出IOException的情况?

我有以下课程:

    public class FileLoader {   

         private Map<Brand, String> termsOfUseText = new HashMap<Brand, String>();

         public void load() {
            for (Brand brand : Brand.values()) {
                readAndStoreTermsOfUseForBrand(brand);
            }
         }

         private void readAndStoreTermsOfUseForBrand(Brand brand) {
            String resourceName = "termsOfUse/" + brand.name().toLowerCase() + ".txt";          
            InputStream in = this.getClass().getClassLoader().getResourceAsStream(resourceName);            
            try {
                String content = IOUtils.toString(in);          
                termsOfUseText.put(brand, content);
            } catch (IOException e) {
                throw new IllegalStateException(String.format("Failed to find terms of use source file %s", resourceName),e);
            }
         }

        public String getTextForBrand(Brand brand) {
            return termsOfUseText.get(brand);
        }
    }
Run Code Online (Sandbox Code Playgroud)

Brand是一个枚举,我需要所有有效的.txt文件都在类路径上.如果Brand …

java unit-testing

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

我的Hibernate映射中的值对象或实体对象?

我正在尝试设计一个非常简单的应用程序,并让自己对Hibernate对实体和值对象的定义感到困惑(如Java Persistence with Hibernate的第4章中所定义).

我所拥有的是一个与客户合作的应用程序,可以下订单(一对多关系).这些订单中的每一个都有许多订单行(也是一对多).现在,我认为客户有身份(客户编号),订单(订单编号)也是如此,因此他们是实体对象?我的困惑在于订单行.

订单行包含数量,产品编号和价格.如果订单行没有它的顺序就不能存在,并且它没有自己的标识,因此我将其视为一个值对象.但我不能将订单行作为订单表的一部分,因为订单与订单行之间存在一对多的关系.一对多关系如何与值对象的定义一起使用?来自Hibernate的书:

"值类型的对象没有数据库标识;它属于实体实例,其持久状态嵌入在拥有实体的表行中.值类型没有标识符或标识符属性"

如果有人能解决我的困惑,我会非常感激:)

orm entity hibernate one-to-many value-objects

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

比较两个列表并从一个列表中删除重复项

我有一个名为FormObject的对象,它包含两个ArrayLists - oldBooks和newBooks - 两者都包含Book对象.

oldBooks允许包含重复的Book对象newBooks不允许在其自身中包含重复的Book对象,并且不能在oldBooks列表中包含任何Book对象的重复项.

重复Book的定义很复杂,我无法覆盖equals方法,因为定义在Book对象的所有用途中都不是通用的.

我打算在FormObject类上有一个名为removeDuplicateNewBooks的方法,它将执行上述功能.

你会如何实现这个?我的第一个想法是使用HashSets消除重复但不能覆盖Book对象上的equals意味着它将无法工作.

java collections equals duplicates

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

如何使用Hibernate 3 Annotated Classes配置Spring Security 2数据库身份验证?

我正在使用Hibernate 3(带JPA Annotations),Spring 2.5和Spring Security 2.0.5构建应用程序.

我想知道我需要<authentication-provider>在spring安全配置文件(applicationContext-security.xml)中放入我的标签,以便我可以让Spring Security使用我现有的Service层类(AuthenticationService)来处理我的自定义用户和角色域对象.

据我所知,Spring Security要求两个表存在以下模式:

     create table users(
      username varchar_ignorecase(50) not null primary key,
      password varchar_ignorecase(50) not null,
      enabled boolean not null);

  create table authorities (
      username varchar_ignorecase(50) not null,
      authority varchar_ignorecase(50) not null,
      constraint fk_authorities_users foreign key(username) references users(username));

  create unique index ix_auth_username on authorities (username,authority);;
Run Code Online (Sandbox Code Playgroud)

但我想使用自己的域对象,这些对象与上面的表定义不同.

有人可以指点我这里正确的方向吗?我找不到任何有用的文档,我不确定我想做的事情是否真的可行.

谢谢!

spring jpa spring-security

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

XSLT无法正常工作

我有一个XML文件,我想使用XSLT进行转换.它仅在我从XML文件的以下部分中删除所有属性时才起作用:

<DiscoveryClientData 
  xmlns="http://www.frontrange.com/centennial/discovery" 
  SchemaVersion="0.6" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.frontrange.com/centennial/discovery DiscoveryClientData-0.6.xsd"
/>
Run Code Online (Sandbox Code Playgroud)

XSLT就像这样开始:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
      <xsl:template match="DiscoveryClientData">
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这可能会失败?失败的是它没有在转换后的数据周围放置任何元素标签,它只是将它全部吐出一个连续的字符串.

谢谢!

编辑:好的,下面给出的示例有效,但有没有办法在XSLT文件中只定义一次前缀?所以我不必重写我的整个XSLT文件?谢谢.

xml xslt

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

在Heroku中重定向SSL

我在让我的Java Web应用程序在Heroku上工作时遇到了麻烦.

这就是我所拥有的:

使用Spring Security的Java Web应用程序(标准war文件),在我的web.xml中有一个安全约束部分,如下所示:

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>SSL URLs</web-resource-name>
            <url-pattern>/j_spring_security_check</url-pattern>
            <url-pattern>/secure/account/create</url-pattern>
            <url-pattern>/register</url-pattern>
            <url-pattern>/login/*</url-pattern>
            <url-pattern>/</url-pattern> 
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint> 
Run Code Online (Sandbox Code Playgroud)

当我将我的WAR文件部署到Heroku(使用Atlassian Bamboo的Heroku部署插件)并启动应用程序时,我的浏览器中出现"太多重定向"错误 - 看起来它与之间的轻弹有关https和http,但我无法弄清楚我需要做些什么来修复它.

我现在只想使用背负式SSL,因为SSL插件对于我的爱好项目而言相当昂贵(每月20美元).

java ssl heroku

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

Play框架应用程序中的环境特定配置

我已经浏览了一下,但我不清楚如何为Play框架应用程序配置一组特定于环境的变量.

作为一个例子,我想使用像h2这样的内存数据库进行本地开发,但是当我转移到生产或我的预生产环境时,我想连接到postgres数据库.

如何配置我的应用程序,以便它将使用与其部署的环境相关的变量?这是一款Scala Play应用.

scala environment-variables playframework playframework-2.0

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