我在Hibernate论坛上问过这个问题,但没有得到完整的答复,所以我想我会在这里重新发布.这是原始问题主题:
http://forum.hibernate.org/viewtopic.php?f=1&t=1008243&p=2438963#p2438963
简而言之,我有一个自定义HQL查询将两个完全不相关的表连接在一起,我试图通过禁用加载我的Hibernate映射中存在的关联集合来防止"O(N + 1)选择"问题的POJO.
显然,我可以使用Hibernate 获取配置文件,但有一个障碍.这是Hibernate的FetchMode.java所说的:
/**
* Fetch using an outer join. Equivalent to <tt>fetch="join"</tt>.
*/
public static final FetchMode JOIN = new FetchMode("JOIN");
/**
* Fetch eagerly, using a separate select. Equivalent to
* <tt>fetch="select"</tt>.
*/
public static final FetchMode SELECT = new FetchMode("SELECT");
/**
* Fetch lazily. Equivalent to <tt>outer-join="false"</tt>.
* @deprecated use <tt>FetchMode.SELECT</tt>
*/
public static final FetchMode LAZY = SELECT;
Run Code Online (Sandbox Code Playgroud)
所以,"LAZY"并不是很懒,它只是"SELECT",这正是我想要避免的.
是否有一个提取模式可以防止加载集合?如果没有,是否有其他方法可以在特定HQL查询过程中禁用集合加载?
我意识到实现这一点的传统方法是使用Criteria查询,但我需要对任意属性进行连接,据我所知,没有Criteria.
此问题表明转发时,请求对象中的信息会更新以反映新文件.例如,当:
用户请求"/ abc" - >调用servlet>转发到/def.jsp
然后def.jsp ${request.requestURI}将是/def.jsp而不是/abc.如果想要获取原始请求的URI(或任何其他信息,如servlet路径等):
request.getAttribute("javax.servlet.forward.request_uri");
Run Code Online (Sandbox Code Playgroud)
一切都很好,但我怎么能通过JSTL访问它.${javax.servlet.forward.request_uri}不起作用.该点被视为运算符,而不是名称的一部分.在其他情况下,这可以通过将名称放在方括号中并引用它来解决.但是这里没有地图对象,并且${['javax.servlet...']}不起作用.
又怎样?
(我可以将它放在servlet中的"无点"属性中,但这是一种解决方法)
int[] a=new int[4];
Run Code Online (Sandbox Code Playgroud)
我认为当数组创建时..如果我是正确的,那么构造函数将调用(将元素赋值为默认值).其中就是构造函数..
我正在使用Spring 3 MVC,我在注入Objects时遇到了问题.我创建了控制器对象@Controller.我用@ServiceObject 创建了一个服务对象.我用AutoWire在服务器中注入了服务对象.我创建了DAO对象,并注入了服务对象,并测试了应用程序,它运行正常.然后我戴上@Transactional了DAO,然后它也运行良好.但是,当我把@Transactional服务对象,它给我的问题.在部署时,在控制器上它称为"
上下文初始化失败:org.springframework.beans.factory.BeanCreationException:创建名为'loginController'的bean时出错:注入自动连接的依赖项失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装配方法:public void com.erudicus.controller.LoginController.setLoginService(com.erudicus.model.service.LoginServiceImpl); 嵌套异常是java.lang.IllegalArgumentException:参数类型不匹配".
这是代码控制器
@Controller
public class LoginController {
private static Logger LOG = Logger.getLogger(LoginController.class);
private LoginServiceImpl loginService = null;
public LoginServiceImpl getLoginService() {
return loginService;
}
@Autowired
public void setLoginService(LoginServiceImpl loginService) {
this.loginService = loginService;
}
@RequestMapping(value="/login" , method= RequestMethod.GET)
public String login(Model model) {
model.addAttribute(new Login());
return "login";
}
@RequestMapping(value="/loginDetails", method=RequestMethod.POST)
public ModelAndView create(@Valid Login login, BindingResult result) {
}
}
Run Code Online (Sandbox Code Playgroud)
服务对象
@Service
public …Run Code Online (Sandbox Code Playgroud) 构建的一个选项是在构建时打包特定于环境的属性(例如,使用maven配置文件)
另一个选择是设置-Denv=production您的生产环境,并在启动时加载/${env}/config.properties.(春天允许这样,但它可以手动完成)
我用过这两个.前者意味着没有额外的环境配置.后者允许在多个环境中使用相同的构建.
问题:任何其他重要的利弊,或几乎相同的方法将被选择?
这是我无法理解的.
在java.lang.Object所述clone()与定义protected改性剂.根据定义,它可以通过名称在其自己的类定义中访问,通过名称在从它派生的任何类中,并通过名称在同一个包中的任何类的定义中.
这里的Sample类在另一个包中,显然它无法clone()从Object类中访问.但是,由于Sample隐含地来源Object,为什么它无法访问它?该定义并未说明它必须满足两个条件(在同一个包内并且也是一个子类).
public class Sample {
public Object foo() throws CloneNotSupportedException {
...
return someObject.clone();
}
}
Run Code Online (Sandbox Code Playgroud) 我对 JPA 还很陌生,正在尝试进行基本的实体设置。
我知道表属性映射到 java 类型,例如映射到字符串的 varchar。
在我的表中,我有一个列代码,它是一个char(2), 并存储一个两个字母的代码。
我将如何在实体中使用它?我尝试使用字符串,但似乎这不是要使用的正确映射。
问题: 从oracle数据库中获取类似50.20的值时,似乎我的大小数的映射类正在下降0.如果它的50.23,它将正确获取值,但最后没有0.我想象我想念的东西很简单.建议?提前致谢.
细节
数据库:Oracle 11G字段定义:数字(8,2)
映射getter/setter
@Column ( name="PRICE", precision = 8, scale = 2 )
private BigDecimal price;
public BigDecimal getPrice()
{
return price;
}
public void setPrice( BigDecimal price )
{
this.price = price;
}
Run Code Online (Sandbox Code Playgroud) 我正在实施一项JavaEE任务,我在接受采访时给出了这项任务.
我有一些关于EJB的经验,但没有任何与JMS和MDB相关的经验.所以这是我通过众多例子找到的:
topic/ queue,jmsactivationConfigJBoss需要该属性,而在Sun教程中则不然.这可能只是JBoss,但由于它经过认证可以实现规范,因此规范似乎并未指定这些内容.所有涉嫌携带的东西都消失了.
所以我想知道 - 为什么声称JavaEE是可移植的,你可以把它放在另一个应用程序服务器上然后神奇地运行,如果这些非常基本的东西看起来根本不可移植的话.
PS对不起咆哮,但我想我可能会做错/做错,所以陈述你的意见.
我正在研究源代码,java.util.HashMap我想看看hashcode函数在Entrys 的内部数组(这是一个软件包私有变量)中分配密钥的效果如何.所以我java.util在我的项目中创建了一个名为查看天气I 的软件包可以欺骗编译器认为它是相同的包.令人惊讶的是它工作,我写了以下代码:
package java.util;
public class HashMapExt<K, V> extends HashMap<K, V> implements Map<K, V> {
public static void main(String[] args) {
HashMapExt<Integer, String> mp = new HashMapExt<Integer, String>();
mp.put(1, "Hello");
mp.put(2, "Map");
mp.put(3, "Extention");
mp.printData();
}
void printData() {
System.out.println(Arrays.toString(table));
}
}
Run Code Online (Sandbox Code Playgroud)
它成功编译但在运行时它给出了一个例外:
Exception in thread "main" java.lang.SecurityException: Prohibited package name: java.util
at java.lang.ClassLoader.preDefineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud)