小编joa*_*vio的帖子

JPA中的@Basic(可选= false)vs @Column(nullable = false)

JPA持久性@Basic(optional = false)@Column(nullable = false)JPA持久性之间有什么区别?

java orm jpa

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

如何使maven cobertura和surefire插件一起工作?

我把surefire和cobertura插件放在我的pom.xml,但我无法配置他们工作正常.或者cobertura不运行或测试执行两次.

那么,我怎么能配置它们一起运行的插件呢?

如果我以这种方式配置,cobertura不会运行:

<plugin>
<groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

如果我以这种方式配置,测试将执行两次:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.5.1</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals>
                <goal>cobertura</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

configuration cobertura maven maven-surefire-plugin

8
推荐指数
1
解决办法
4840
查看次数

JPA - @OneToMany更新

考虑到有两个实体,即部门和员工,其中一个部门有N个员工.

在Departament:

@OneToMany(mappedBy = "department", fetch = FetchType.EAGER)
private Collection<Employee> employees = new ArrayList<Employee>();
Run Code Online (Sandbox Code Playgroud)

在员工中:

@ManyToOne(fetch = FetchType.EAGER)
private Department department;
Run Code Online (Sandbox Code Playgroud)

一切正常,但我想在没有设置反向关系的情况下将员工添加到部门.例如:

// I will add two employees to a department
department.getEmployees().add(employee1);
department.getEmployees().add(employee2);

// In fact, it is necessary to set the opposite side of the relationship
employee1.setDepartment(department);
employee2.setDepartment(department);

entityManager.merge(department);      
//...
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:是否有某种方式(例如通过一些注释)JPA会理解它应该将更改传播到关系的另一端而不是我明确的那样?换句话说,我只想这样做:

department.getEmployees().add(employee1);
department.getEmployees().add(employee2);
entityManager.merge(department);
Run Code Online (Sandbox Code Playgroud)

非常感谢!

annotations hibernate jpa one-to-many

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

Hibernate错误在@PostPersist方法中持久存在实体

我在DB中有双重插入的奇怪错误.我有以下课程:

  • TestEntity - 具有@PrePersist和@PostPersist方法的实体.
  • Auditoria - 审计实体
  • 数据集 - DatasetBean的接口
  • DatasetBean - 实现数据集的无状态bean
  • DatasetFactory - 实例是数据集的EJB(查找)

我把问题放在junit测试中(我使用的是嵌入式Glassfish):

@Test
public void test() throws NamingException {
    Dataset<TestEntity> dataset = this.lookupBy(DatasetBean.class);
    Assert.assertNotNull(dataset);

    TestEntity t = new TestEntity();        
    t.setName(UUID.randomUUID().toString());

    dataset.insert(t);
    System.out.println("end");
}
Run Code Online (Sandbox Code Playgroud)

测试流程如下:

  1. 在获取数据集对象后,我尝试插入TestEntity对象

    @Stateless @EJB(name ="...",beanInterface = Dataset.class)公共类DatasetBean实现Dataset {

    @PersistenceContext(type = PersistenceContextType.TRANSACTION)
    private EntityManager entityManager;
    
    @Override
    public void insert(T entidade) {
        LOG.info("Inserting: " + entidade);
        entityManager.persist(entidade);
    }
    //...
    
    Run Code Online (Sandbox Code Playgroud)

    }

  2. 使用DatasetFactory,我尝试在TestEntity的@PostPersist方法中插入审计实体

    公共类DatasetFactory {公共静态数据集createDataset(){尝试{回报率(数据集)新的InitialContext()查询( "...").} catch(Exception ex){throw new RuntimeException(ex); }}}

    @Entity公共类TestEntity实现MyEntity {@Id private Integer id; …

java lifecycle entity hibernate jpa

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

我怎么能为EntityManager.class做一个拦截器

我想使用entitymanager审核插入,更新,删除等.为此,我怎么能为EntityManager.class做一个可以使用EJB的拦截器???

java ejb jpa entitymanager

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