小编Boz*_*zho的帖子

哪个Hibernate FetchMode会导致集合被延迟加载?

我在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.

java orm hibernate lazy-loading

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

如何在JSTL/EL中获取前向信息,作为包含点的属性

此问题表明转发时,请求对象中的信息会更新以反映新文件.例如,当:

用户请求"/ 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中的"无点"属性中,但这是一种解决方法)

java jsp servlets jstl el

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

构造函数在数组创建中调用

int[] a=new int[4];
Run Code Online (Sandbox Code Playgroud)

我认为当数组创建时..如果我是正确的,那么构造函数将调用(将元素赋值为默认值).其中就是构造函数..

java arrays

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

spring 3 @controller无法注入具有@Transactional的服务对象

我正在使用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)

java spring transactions spring-mvc

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

环境特定构建与加载环境特定属性

构建的一个选项是在构建时打包特定于环境的属性(例如,使用maven配置文件)

另一个选择是设置-Denv=production您的生产环境,并在启动时加载/${env}/config.properties.(春天允许这样,但它可以手动完成)

我用过这两个.前者意味着没有额外的环境配置.后者允许在多个环境中使用相同的构建.

问题:任何其他重要的利弊,或几乎相同的方法将被选择?

相关:加载特定于环境的属性以与PropertyPlaceholderConfigurer一起使用?

java deployment build

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

从java.lang.Object访问clone()

这是我无法理解的.

在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)

java oop clone access-modifiers

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

JPA 字符映射

我对 JPA 还很陌生,正在尝试进行基本的实体设置。

我知道表属性映射到 java 类型,例如映射到字符串的 varchar。

在我的表中,我有一个列代码,它是一个char(2), 并存储一个两个字母的代码。

我将如何在实体中使用它?我尝试使用字符串,但似乎这不是要使用的正确映射。

java database jpa jpa-2.0

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

Hibernate - BigDecimal Mapping Precision

问题: 从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)

java hibernate

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

JavaEE真的可移植吗?

我正在实施一项JavaEE任务,我在接受采访时给出了这项任务.

我有一些关于EJB的经验,但没有任何与JMS和MDB相关的经验.所以这是我通过众多例子找到的:

  • 应用程序服务器将其主题和队列绑定到不同的JNDI名称 - 例如topic/ queue,jms
  • activationConfigJBoss需要该属性,而在Sun教程中则不然.
  • 在开始我的应用程序之后,jboss警告我,我的主题没有绑定(实际上并不是 - 我没有绑定它,但我希望它自动绑定 - 事实上,在一个JBoss 4.0自动绑定的例子中似乎发生了).建议的解决方案是将其映射到一些jboss文件中,甚至使用特定于jboss的注释.

这可能只是JBoss,但由于它经过认证可以实现规范,因此规范似乎并未指定这些内容.所有涉嫌携带的东西都消失了.

所以我想知道 - 为什么声称JavaEE是可移植的,你可以把它放在另一个应用程序服务器上然后神奇地运行,如果这些非常基本的东西看起来根本不可移植的话.

PS对不起咆哮,但我想我可能会做错/做错,所以陈述你的意见.

java jms java-ee ejb-3.0

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

使用保留包名访问包 - 私有变量

我正在研究源代码,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)

java access-modifiers

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