小编blo*_*low的帖子

Hibernate无法同时获取多个行李

Hibernate在SessionFactory创建期间抛出此异常:

org.hibernate.loader.MultipleBagFetchException:无法同时获取多个行李

这是我的测试用例:

Parent.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 // @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null.
 private List<Child> children;

}
Run Code Online (Sandbox Code Playgroud)

Child.java

@Entity
public Child {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private Parent parent;

}
Run Code Online (Sandbox Code Playgroud)

这个问题怎么样?我能做什么?


编辑

好吧,我遇到的问题是另一个"父"实体在我父母的内部,我的真实行为是这样的:

Parent.java

@Entity
public Parent {

 @Id
 @GeneratedValue(strategy=GenerationType.IDENTITY)
 private Long id;

 @ManyToOne
 private AntoherParent anotherParent;

 @OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
 private List<Child> children;

}
Run Code Online (Sandbox Code Playgroud)

AnotherParent.java

@Entity …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

428
推荐指数
8
解决办法
29万
查看次数

用于管理H2数据库的前端工具

如何使用H2数据库的集成管理前端?

对于诸如create table,alter table,add column等操作.

database h2 database-administration

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

DAO vs ORM(休眠)模式

我在一些文章中读到DAO对于hibernate并不是强制性的,它的实现是"依赖于",换句话说,我们可以在ORM与DAO模式之间进行选择.

好吧,我们假设我不想使用DAO模式,所以我只使用会话CRUD和hibernate提供的查询操作(我的ORM).

特别是对于"搜索"和"查找"查询来说,总是重写它们是不正确的,所以合理的想法就是把它们放到一个类中.

但是这个类是一个简单的DAO,没有DAO模式和DAOFactory的所有实现,只是DAO的轻量级实现.所以,重点是我们总是需要一个DAO,选择是重DAO实现还是轻量级DAO实现?

我说的是错的?

编辑 我的另一个问题是放置dao交互,例如我必须登录用户并写入登录日志(我知道无用的例子......)

所以在DAO模式中,我有所有泛型dao实现,DAOFactory,最后是UserHibernateDAO和LogHibernateDAO.登录操作是一种业务方法:

private void login(String username, String password){
    daoFactory.beginTransaction();
    UserDAO userDao=daoFactory.HIBERNATE.getUserDao();
    LogDAO logDao=daoFactory.HIBERNATE.getLogDao();
    if(userDao.checkAccount(username, password){
        User user=userDao.findByAccount(username, password);
        logDao.save(new Log("log-in", user);
    }
    daoFactory.commit();
}
Run Code Online (Sandbox Code Playgroud)

这合理吗?我可以用这种方式使用dao吗?如果我想要处理异常,那么更好的地方就是业务逻辑?

EDIT2 让我们假设使用DAO模式,这样做的主要原因是能够在tecnhology(ORM-> JDBC等等)之间切换,一切都很好,但是我可以在哪里处理hibernate会话和事务?我不能把它放到DAO中,这是anty模式,我不能把它放到服务层,因为在hipohtetycal开关我必须删除所有这个交易(因为其他技术可能不会使用它们).

java dao design-patterns hibernate

45
推荐指数
3
解决办法
4万
查看次数

在双显示器配置中的特定屏幕中显示JFrame

我有一个双监视器配置,我想在特定的监视器中运行我的GUI,如果找到它.我试图创建我的JFrame窗口传递GraphicConfiguration我的屏幕设备的对象,但它不起作用,框架仍显示在主屏幕上.

如何设置必须显示框架的屏幕?

java swing multiple-monitors jframe

43
推荐指数
3
解决办法
4万
查看次数

在JUnit中使用Spring测试服务时如何回滚数据库事务?

我测试我的DAO和服务没有问题,但是当我测试INSERTs或UPDATEs时我想回滚事务而不影响我的数据库.

@Transactional在我的服务中使用来管理交易.我想知道,是否可以知道某个事务是否正常,但是回滚它以防止更改数据库?

这是我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:/META-INF/spring.cfg.xml")
@TransactionConfiguration(defaultRollback=true)
public class MyServiceTest extends AbstractJUnit38SpringContextTests  {
    @Autowired
    private MyService myService;

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }

    @Test
    public void testInsert(){
        long id = myService.addPerson( "JUNIT" );
        assertNotNull( id );
        if( id < 1 ){
            fail();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是此测试将失败,因为事务已回滚,但插入正常!如果我删除@TransactionConfiguration(defaultRollback=true)了测试通过但是新记录将被插入到数据库中.

@Test
@Transactional
@Rollback(true)
public void testInsert(){
    long id = myService.addPerson( "JUNIT" );
assertNotNull(id); …
Run Code Online (Sandbox Code Playgroud)

java junit spring hibernate transactions

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

什么是用于Java桌面应用程序的最佳数据库

以下哪个数据库最适合大型桌面应用程序:Firebird,JavaDB,hsqldb?我需要性能,易用性和完全免费的许可证.

java database firebird

26
推荐指数
2
解决办法
3万
查看次数

Java禁用dpi-aware无法正常工作

我正在尝试使用-Dsun.java2d.dpiaware=false参数运行Java应用程序,但没有任何反应.

我希望有一个模糊的用户界面,但图标和字体的大小正常,似乎这个标志不起作用.

我在Windows 8.1上使用JDK 1.8.0_45.

我发现了这个错误https://bugs.openjdk.java.net/browse/JDK-8080153但我不明白如何解决它.

java jvm-arguments java-8 dpi-aware

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

java,hibernate:带有查询的mapping属性

我有一个属性为"quantity"的实体,该值不是表字段,而是使用hql查询动态计算的.

那么,有可能在我的实体中添加这个值,并在我加载实体时让hibernate计算它吗?

java hibernate hibernate-mapping

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

处理spring + hibernate异常的位置和方式?

我使用spring + hibernate用于桌面应用程序.

我正在尝试使用分层实现来构建它,所以我有:

GUI层 - 调用 - >服务层 - 调用 - > DAO层

一个小例子来更好地解释我的情况:

// In GUI layer
private void actionPerformed(ActionEvent evt){
    addUser();
}

private void addUser(){
    // Check gui validation for user inputs
    if(inputIsValid()){
        String username=nameText.getText();
        String pass=passText.getText();
        //Now call service layer
        userService.createUser(username, pass);
        // Now here i want to show a message to user like
        // "Operation successful" or "Operation failed"
        // or more sofisticated message like "User with same name already exists"
    }
}


// Service …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate exception-handling

15
推荐指数
1
解决办法
9429
查看次数

Spring + Hibernate,将autowire sessionFactory转换为hibernate DAO

我有一个Hibernate的DAO,在根据Hibernate的API 3春天3.x中,我用一个简单的sessionFactoryNOTHibernateDaoSupport+ getHibernateTemplate()-我希望这是一个不错的选择-

现在我的目标是sessionFactory使用注释自动装入我的DAO.

spring.xml有这个:

<context:component-scan base-package="data" />
Run Code Online (Sandbox Code Playgroud)

内部数据包我有我所有的DAO和服务类.

这很简单HibernateDao:

@Repository
public class PersonHDAO implements PersonDAO {

 private SessionFactory sessionFactory;

 @Autowired
 public void setSessionFactory(SessionFactory sessionFactory) {
     this.sessionFactory = sessionFactory;
 }

 public List<Person> findAll(){
  return sessionFactory.getCurrentSession().createQuery("bla bla").list();
 }
}
Run Code Online (Sandbox Code Playgroud)

我在spring.xml加载过程中没有错误,但sessionFactory仍然是null.

我该怎么办?

编辑

这是我sessionFactoryspring.xml以下方面的声明:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context" …
Run Code Online (Sandbox Code Playgroud)

spring hibernate sessionfactory autowired

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