我正在开发一个JPA(Hibernate实现),Spring和Stripes Web应用程序.我有许多JPA实体,它们具有以下共同的审计和查询字段:
createdBy - 创建实体的人员的用户ID.createdOn - 创建实体的日期updatedBy - 上次更新实体的人员的用户ID updatedOn - 实体上次更新的日期
我有我的应用程序工作,以便在实体持久化时自动设置createdOn和updatedOn但我不知道如何填充createdBy和updatedBy字段而不必一直通过当前登录用户的ID从控制器类到DAO.
有没有人有任何关于如何在不通过所有地方传递用户ID的情况下这样做的建议?请注意,当前用户ID目前存储在HttpSession对象中,因此我的后端需要以某种方式访问此数据...
谢谢!
我想将以下查询编写为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查询,也可以作为我的解决方案.
我几乎没有处理大量交易网站的经验,最近遇到了这个有趣的问题.我有兴趣知道Java Web应用程序中的瓶颈会在高负载(每秒数千个请求)下发生.如果有人能给我一个高级别的方法来思考以下问题,那就太棒了!
我唯一想到的是使用memcached来缓存数据库查找,但我不知道如何计算每个请求将花费的时间量,因此系统可能能够计算每秒的请求数量处理.
问题: 必须设计Internet规模的应用程序来处理大量事务.描述一个系统的设计,该系统必须每秒平均处理30,000个HTTP请求.对于每个请求,系统必须使用通过URL查询字符串传入的关键字查找5000万字的字典.每个响应都包含一个包含单词定义(100字节或更少)的字符串.
描述系统的主要组件,并注意哪些组件应该是定制的,哪些组件可以利用第三方应用程序.包括每个组件的硬件估计.请注意,设计应包括最低的硬件/软件许可成本.
记录提出估算的理由.
描述如果定义为10千字节,设计将如何变化.
我要求在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中是不好的做法?或者复制'完整'的值更糟糕?
提前致谢.
我在我的后端使用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由于某种原因舍入了我定义的数字.有没有办法可以迫使这种情况发生?任何人都可以解释为什么它可能这样做?
谢谢!
我主要是一名Java开发人员,这是我最有经验的地方.我想提高我的编码技能,所以我正在学习一门功能语言.
我不希望它对我来说太大了,我不想陷入太多陌生的事情中,我想尽快加快速度.
您是否可以推荐一种语言/平台,以便我第一次认真看待函数式编程?
我有以下课程:
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 …
我正在尝试设计一个非常简单的应用程序,并让自己对Hibernate对实体和值对象的定义感到困惑(如Java Persistence with Hibernate的第4章中所定义).
我所拥有的是一个与客户合作的应用程序,可以下订单(一对多关系).这些订单中的每一个都有许多订单行(也是一对多).现在,我认为客户有身份(客户编号),订单(订单编号)也是如此,因此他们是实体对象?我的困惑在于订单行.
订单行包含数量,产品编号和价格.如果订单行没有它的顺序就不能存在,并且它没有自己的标识,因此我将其视为一个值对象.但我不能将订单行作为订单表的一部分,因为订单与订单行之间存在一对多的关系.一对多关系如何与值对象的定义一起使用?来自Hibernate的书:
"值类型的对象没有数据库标识;它属于实体实例,其持久状态嵌入在拥有实体的表行中.值类型没有标识符或标识符属性"
如果有人能解决我的困惑,我会非常感激:)
我有一个名为FormObject的对象,它包含两个ArrayLists - oldBooks和newBooks - 两者都包含Book对象.
oldBooks允许包含重复的Book对象newBooks不允许在其自身中包含重复的Book对象,并且不能在oldBooks列表中包含任何Book对象的重复项.
重复Book的定义很复杂,我无法覆盖equals方法,因为定义在Book对象的所有用途中都不是通用的.
我打算在FormObject类上有一个名为removeDuplicateNewBooks的方法,它将执行上述功能.
你会如何实现这个?我的第一个想法是使用HashSets消除重复但不能覆盖Book对象上的equals意味着它将无法工作.
我正在使用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)
但我想使用自己的域对象,这些对象与上面的表定义不同.
有人可以指点我这里正确的方向吗?我找不到任何有用的文档,我不确定我想做的事情是否真的可行.
谢谢!
我有一个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文件?谢谢.
我在让我的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美元).
我已经浏览了一下,但我不清楚如何为Play框架应用程序配置一组特定于环境的变量.
作为一个例子,我想使用像h2这样的内存数据库进行本地开发,但是当我转移到生产或我的预生产环境时,我想连接到postgres数据库.
如何配置我的应用程序,以便它将使用与其部署的环境相关的变量?这是一款Scala Play应用.