Kohei Nozaki's blog 

NativeQueryで関連持ちエンティティをSELECTしてみる


Posted on Sunday Jan 26, 2014 at 11:05AM in Technology


NativeQueryでSELECTしてみるの続きです。前回は関連の無いエンティティでしたが今回は関連のあるエンティティをSELECTしてみます

環境

  • Hibernate 4.3.0.Final
  • WildFly8.0.0.CR1
  • Oracle JDK7u51
  • postgresql-9.3-1100.jdbc41.jar
  • PostgreSQL 9.2.4

用意するエンティティ

Deptエンティティを追加してこういう感じにします。

Hibernateが作るテーブルはこういう感じになります

jpaprac=# \d dept
              Table "public.dept"
  Column  |          Type          | Modifiers 
----------+------------------------+-----------
 id       | bigint                 | not null
 deptname | character varying(255) | 
Indexes:
    "dept_pkey" PRIMARY KEY, btree (id)
Referenced by:
    TABLE "employee" CONSTRAINT "fk_1n3sqh4h9gtmwb1o1twpoi30l" FOREIGN KEY (dept_id) REFERENCES dept(id)

jpaprac=# \d employee
            Table "public.employee"
  Column   |          Type          | Modifiers 
-----------+------------------------+-----------
 id        | bigint                 | not null
 firstname | character varying(255) | 
 lastname  | character varying(255) | 
 dept_id   | bigint                 | 
Indexes:
    "employee_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
    "fk_1n3sqh4h9gtmwb1o1twpoi30l" FOREIGN KEY (dept_id) REFERENCES dept(id)

jpaprac=# 

準備

配置図

図中で選択されている資源を作成または編集します。Employee.javaは前回も使いましたが関連を追加するために若干変更します。orm.xmlには新たなクエリを追加します。

Dept.java

package org.arquillian.example;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Dept implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String deptName;
    @OneToMany(mappedBy = "dept")
    private List<Employee> employees;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public List<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(List<Employee> employees) {
        this.employees = employees;
    }

    @Override
    public String toString() {
        return "Dept [id=" + id + ", deptName=" + deptName + ", employees=" + employees.size() + "]";
    }

}

Employee.java

package org.arquillian.example;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String firstName;
    @Column
    private String lastName;
    @ManyToOne
    @JoinColumn
    private Dept dept;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", dept=" + dept + "]";
    }

}

orm.xml

findEmployeeWithDeptを追加します

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd">

    <named-native-query name="findEmployee" result-set-mapping="employeeResult">
        <query><![CDATA[
            SELECT
                emp.id,
                emp.firstName,
                emp.lastName
            FROM
                Employee AS emp
        ]]></query>
    </named-native-query>

    <named-native-query name="findEmployeeWithDept" result-set-mapping="employeeResult">
        <query><![CDATA[
            SELECT
                emp.id,
                emp.firstName,
                emp.lastName,
                emp.dept_id
            FROM
                Employee AS emp
        ]]></query>
    </named-native-query>

    <sql-result-set-mapping name="employeeResult">
        <entity-result entity-class="org.arquillian.example.Employee"/>
    </sql-result-set-mapping>       
</entity-mappings>

RelativeSelectTest.java

package org.arquillian.example;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.persistence.UsingDataSet;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class RelativeSelectTest {
    @Deployment
    public static Archive<?> createDeployment() {
        Archive<?> a = ShrinkWrap.create(WebArchive.class, "test.war")
            .addPackage(Employee.class.getPackage())
            .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
            .addAsResource("META-INF/orm.xml", "META-INF/orm.xml")
            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
            .addAsWebInfResource("jbossas-ds.xml");
        return a;
    }

    @PersistenceContext
    EntityManager em;

    @Test
    @Transactional
    @UsingDataSet({"datasets/relativeSelect/dept.yml", "datasets/relativeSelect/employees.yml"})
    public void select() throws Exception {
        dumpEntityList(em.createNamedQuery("findEmployeeWithDept", Employee.class).getResultList());
    }

    protected void dumpEntityList(List<Employee> employees){
        for(Employee e : employees){
            String fmt = String.format("id=%s, firstName=%s, lastName=%s, deptName=%s",
                    e.getId(), e.getFirstName(), e.getLastName(), e.getDept().getDeptName());
            System.out.println(fmt);
        }
    }
}

dept.yml

dept:
  - id: -1
    deptName: Sales
  - id: -2
    deptName: Legal

employees.yml

employee:
  - id: -1
    firstname: Taro
    lastname: Yamada
    dept_id: -1
  - id: -2
    firstname: Jiro
    lastname: Suzuki
    dept_id: -1
  - id: -3
    firstname: Saburo
    lastname: Tanaka
    dept_id: -2

実行結果

11:48:22,373 INFO  [stdout] (pool-2-thread-4) Hibernate: SELECT emp.id, emp.firstName, emp.lastName, emp.dept_id FROM Employee AS emp
11:48:22,375 INFO  [stdout] (pool-2-thread-4) Hibernate: select dept0_.id as id1_0_0_, dept0_.deptName as deptName2_0_0_ from Dept dept0_ where dept0_.id=?
11:48:22,376 INFO  [stdout] (pool-2-thread-4) Hibernate: select dept0_.id as id1_0_0_, dept0_.deptName as deptName2_0_0_ from Dept dept0_ where dept0_.id=?
11:48:22,377 INFO  [stdout] (pool-2-thread-4) id=-1, firstName=Taro, lastName=Yamada, deptName=Sales
11:48:22,377 INFO  [stdout] (pool-2-thread-4) id=-2, firstName=Jiro, lastName=Suzuki, deptName=Sales
11:48:22,377 INFO  [stdout] (pool-2-thread-4) id=-3, firstName=Saburo, lastName=Tanaka, deptName=Legal

備考

NativeQueryではEmployeeテーブルのデータしか取ってきていないのですが、親レコードへの参照であるdept_idを拾ってきていれば、DeptテーブルのデータはJPA側で勝手に別途SELECT文を発行して取ってきてくれるようですね。

続き

NativeQueryでエンティティとスカラ値を同時にSELECTしてみる

参考文献

  1. Pro JPA 2


NativeQueryでSELECTしてみる


Posted on Saturday Jan 25, 2014 at 11:37PM in Technology


ここではNativeQueryを使うまでもない簡単な単独のエンティティをSELECTしてみます。複雑なのは後々。

環境

  • Hibernate 4.3.0.Final
  • WildFly8.0.0.CR1
  • Oracle JDK7u51
  • postgresql-9.3-1100.jdbc41.jar
  • PostgreSQL 9.2.4

前提条件

関連を持たない単独のエンティティをSELECTしてみる

エンティティクラス等を配置

配置図

図で選択されている資源を作る必要が有ります

Employee.java

package org.arquillian.example;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String firstName;
    @Column
    private String lastName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
    }

}

orm.xml

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd">

    <named-native-query name="findEmployee" result-set-mapping="employeeResult">
        <query><![CDATA[
            SELECT
                emp.id,
                emp.firstName,
                emp.lastName
            FROM
                Employee AS emp
        ]]></query>
    </named-native-query>

    <sql-result-set-mapping name="employeeResult">
        <entity-result entity-class="org.arquillian.example.Employee"/>
    </sql-result-set-mapping>       
</entity-mappings>

IndependentSelectTest.java

package org.arquillian.example;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.persistence.UsingDataSet;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class IndependentSelectTest {
    @Deployment
    public static Archive<?> createDeployment() {
        Archive<?> a = ShrinkWrap.create(WebArchive.class, "test.war")
            .addPackage(Employee.class.getPackage())
            .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
            .addAsResource("META-INF/orm.xml", "META-INF/orm.xml")
            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
            .addAsWebInfResource("jbossas-ds.xml");
        return a;
    }

    @PersistenceContext
    EntityManager em;

    @Test
    @Transactional
    @UsingDataSet("datasets/independentSelect/employees.yml")
    public void select() throws Exception {
        dumpEntityList(em.createNamedQuery("findEmployee", Employee.class).getResultList());
    }

    protected void dumpEntityList(List<?> list){
        for(Object o : list){
            System.out.println(o + ", contains=" + em.contains(o));
        }
    }
}

employees.yml

employee:
  - id: -1
    firstname: Taro
    lastname: Yamada
  - id: -2
    firstname: Jiro
    lastname: Suzuki
  - id: -3
    firstname: Saburo
    lastname: Tanaka

jbossas-ds.xml

ローカルで動いているPostgreSQLにjpapracというDBを作っておきます

<?xml version="1.0" encoding="UTF-8"?>
<datasources xmlns="http://www.jboss.org/ironjacamar/schema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.jboss.org/ironjacamar/schema
        http://docs.jboss.org/ironjacamar/schema/datasources_1_0.xsd">
    <datasource enabled="true" jndi-name="jdbc/arquillian" pool-name="ArquillianPostgresPool">
        <connection-url>jdbc:postgresql://localhost:5432/jpaprac</connection-url>
        <driver>postgresql-9.3-1100.jdbc41.jar</driver>
        <security>
            <user-name>postgres</user-name>
            <password>***</password>
        </security>
    </datasource>
</datasources>

test-persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="test">
        <jta-data-source>jdbc/arquillian</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

実行結果

コンソールの出力を関係ありそうなところだけ抜粋

10:23:35,245 INFO  [stdout] (pool-2-thread-12) Hibernate: SELECT emp.id, emp.firstName, emp.lastName FROM Employee AS emp
10:23:35,248 INFO  [stdout] (pool-2-thread-12) Employee [id=-1, firstName=Taro, lastName=Yamada], contains=true
10:23:35,248 INFO  [stdout] (pool-2-thread-12) Employee [id=-2, firstName=Jiro, lastName=Suzuki], contains=true
10:23:35,248 INFO  [stdout] (pool-2-thread-12) Employee [id=-3, firstName=Saburo, lastName=Tanaka], contains=true

普通に出てますね。NamedNativeQueryにしてResultSetMappingまで定義するとManagedになる。

備考

@UsingDataSetアノテーションをテストメソッドに付けると、Arquillian Persistence Extensionがデータ投入してくれますが、投入したデータはテスト後にTRUNCATEされてしまうので、テスト後にテーブルで確認しようとしても見えないようです[3]。これを抑制する設定は現状存在しないらしい。まあデバッガか何かで止めれば見られるだろうけど。

arquillian.xmlにこういう内容を書けばTRUNCATEがテスト実行前に走るようになるので、テスト実行後のデータを簡単に確認できます

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.org/schema/arquillian"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://jboss.org/schema/arquillian
        http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
    <extension qualifier="persistence">
        <property name="defaultCleanupPhase">BEFORE</property>
    </extension>
</arquillian>

HibernateのSQLログは、persistence.xmlのproperties要素内に以下のようなのを追記すると複数行使って見やすくインデントとかしてくれる

<property name="hibernate.format_sql" value="true"/>

続き

NativeQueryで関連持ちエンティティをSELECTしてみる

参考文献

  1. Hibernate - orm.xml - night, night, plane, plane, utf-8, utf-8
  2. Single Table ResultSet Mapping : ResultSet Mapping « JPA « Java Tutorial
  3. Table truncate after @UsingDataSet | Community
  4. Pro JPA 2


ArquillianのテストをリモートのWildFly内でデバッグしてみる


Posted on Saturday Jan 25, 2014 at 10:37PM in Technology


ArquillianをWildFly8.0.0.CR1で動かしてみるの続きです。テストクラスのデバッグをしてみます

ArquillianのRemoteでも普通のクラス同様にデバッグできます[1]。今回のようなケースではEdit Source Lookup Pathをやらないといけないのでその手順を残しておきます

環境

  • wildfly-arquillian-container-remote 8.0.0.CR1
  • Arquillian 1.1.2.Final
  • WildFly 8.0.0.CR1
  • Eclipse Kepler SR1
  • Oracle JDK7u51

前提条件

やってみる

  1. 資源は前述の前提条件の記事で書いたのと全く同じ状態で、テストクラスの39行目にブレークポイントを設定します

  2. WildFlyをDebugで起動します

  3. 右クリック→Run As→JUnit Test。基本的にはこの手順で普通にブレークポイントで止まってデバッグ出来るはず。この手順より後はソースがデバッガに認識されない場合の設定手順です

  4. OK。コンパイラオプションどうのこうの言ってるけど、これONになってても出るし

  5. Yes

  6. Debugパースペクティブに切り替わる。Source not foundと出たら、画面中ほどのEdit Source Lookup Pathをクリック

  7. Addをクリック

  8. Workspace Folderを選択してOK

  9. 作業中のプロジェクトのsrc/test/javaを選択してOK

  10. 追加されたのを確認してOK

  11. ソースと止まってるところが表示されるのを確認

  12. いったんResume(F8)でデバッガを終わらせる

  13. この作業をしている間にデバッガが勝手に終了していたら、投入されたまま放ったらかされているテストデータの掃除などをしておく

  14. 3の手順で再度テストを実行

参考文献

  1. Getting Started: Rinse and Repeat · Arquillian Guides


JavaEE7プロジェクトでArquillianを使ってみる


Posted on Saturday Jan 25, 2014 at 09:23PM in Technology


チュートリアルはJavaEE6ベースで書かれていたが、実際にはJavaEE7で作業したいのでJavaEE7で環境を作る方法

本当はArchetypeを作りたいのだが、まだMavenもEclipseも良くわかっていないのでまた後日

環境

  • WildFly8.0.0.CR1
  • Oracle JDK7u51

手順

  1. WildFly8.0.0CR1でサーブレットを動かしてみるの要領でjavaee7-essentials-archetypeでプロジェクトを作る
  2. java build pathを開き、test用のフォルダが欠けていたりする(test/resourcesとtest/java)のでそれらを作ってRefresh。test用のフォルダはOutput folderをtarget/test-classesに変更する。resourcesフォルダを作ったらExcludedを「**」にする
  3. プロジェクトの設定のdeployment assemblyを開いてテスト用の資源がデプロイされないようにする。test/resourcesがあれば削除
  4. java build pathのorder and exportで並び順を変更
  5. pom.xmlを編集する

pom.xml

こういう感じに改変してやれば良さげ。Arquillian Persistenceも入れておく

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>arquillian-javaee7</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>1.1.2.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.12</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.9.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-integration</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>net.avh4.util</groupId>
            <artifactId>imagecomparison</artifactId>
            <version>0.0.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.junit</groupId>
            <artifactId>arquillian-junit-container</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.wildfly</groupId>
            <artifactId>wildfly-arquillian-container-remote</artifactId>
            <version>8.0.0.CR1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-persistence-impl</artifactId>
            <version>1.0.0.Alpha6</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

こういう感じのテストが走るようになる

[1]にあったサンプルを少し改変したもの。test-persistence.xmlやjbossas-ds.xmlはArquillianチュートリアルのJPAを使ったテストを走らせるところをやってみるのと同じ。

package org.arquillian.example;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.persistence.ShouldMatchDataSet;
import org.jboss.arquillian.persistence.UsingDataSet;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(Arquillian.class)
public class UserPersistenceTest {

    @Deployment
    public static Archive<?> createDeploymentPackage() {
        return ShrinkWrap.create(WebArchive.class, "test.war")
                .addPackage(UserAccount.class.getPackage())
                .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
                .addAsWebInfResource("jbossas-ds.xml");
    }

    @PersistenceContext
    EntityManager em;

    @Test
    @UsingDataSet("datasets/users.yml")
    @ShouldMatchDataSet("datasets/expected-users.yml")
    public void should_change_user_password() throws Exception {
        // given
        String expectedPassword = "LexLuthor";
        UserAccount user = em.find(UserAccount.class, 2L);

        // when
        user.setPassword("LexLuthor");
        user = em.merge(user);

        // then
        Assert.assertEquals(expectedPassword, user.getPassword());
    }
}

テストを走らせると、log4jの設定が無い、slf4jの実装が無い、と怒られるのでそれは適宜対応。

参考文献

  1. Persistence - Arquillian - Project Documentation Editor


jboss-cliからいろいろ設定したりしてみる


Posted on Saturday Jan 25, 2014 at 08:01PM in Technology


jboss-cliを使っていろいろ設定する方法のメモです

環境

  • WildFly 8.0.0.CR1

ロガー

ここに書きました: ロガーを設定してみる

データソース

ここに書きました: CLIでデータソースを定義する

データソースの一覧を見る

ls /subsystem=datasources/data-source

JNDI

ここにも書きました: ProjectStageをJNDIで設定する

一覧表示

ls /subsystem=naming/binding

java:/env/jsf/ProjectStage=Developmentを設定する

/subsystem=naming/binding=java\:\/env\/jsf\/ProjectStage/:add(binding-type=simple,value=Development,class=java.lang.String)

java:/env/jsf/ProjectStageの設定内容を確認する

ls /subsystem=naming/binding=java\:\/env\/jsf\/ProjectStage

java:/env/jsf/ProjectStageの値をUnitTestに変更する

/subsystem=naming/binding=java\:\/env\/jsf\/ProjectStage/:write-attribute(name=value,value=UnitTest)

システムプロパティ

一覧表示

ls /system-property

file.encoding=UTF-8を設定する

/system-property=file.encoding:add(value=UTF-8)

file.encodingの設定内容を確認する

/system-property=file.encoding:read-resource

file.encodingを削除する

/system-property=file.encoding:remove

参考文献

  1. CLI Recipes - JBoss AS 7.1 - Project Documentation Editor