package jef.orm.multitable3; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import jef.database.DbClient; import jef.database.QB; import jef.database.test.DataSource; import jef.database.test.DataSourceContext; import jef.database.test.DatabaseInit; import jef.database.test.JefJUnit4DatabaseTestRunner; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(JefJUnit4DatabaseTestRunner.class) @DataSourceContext({ // @DataSource(name="oracle",url="${oracle.url}",user="${oracle.user}",password="${oracle.password}"), // @DataSource(name = "mysql", url = "${mysql.url}", user = "${mysql.user}", password = "${mysql.password}"), // @DataSource(name="postgresql",url="${postgresql.url}",user="${postgresql.user}",password="${postgresql.password}"), @DataSource(name="derby",url="jdbc:derby:./db;create=true"), // @DataSource(name = "hsqldb", url = "jdbc:hsqldb:mem:testhsqldb", user = "sa", password = ""), // @DataSource(name = "sqlite", url = "jdbc:sqlite:test.db?date_string_format=yyyy-MM-dd HH:mm:ss"), // @DataSource(name = "sqlserver", url = "${sqlserver.url}",user="${sqlserver.user}",password="${sqlserver.password}") }) public class TestCase1 extends org.junit.Assert{ private DbClient db; @BeforeClass public static void setUp() throws SQLException{ // EntityEnhancer en=new EntityEnhancer(); // en.enhance("jef.orm.multitable2.model"); } @DatabaseInit public void prepareData() throws SQLException { db.createTable(Factor.class, Names.class); db.createTable(Factor2.class,Role.class,Sub1.class); } @Test public void case1() throws SQLException { db.select(QB.create(Factor.class)); } @Test public void addData() throws SQLException { Role r1=new Role("Role1"); Role r2=new Role("Role2"); int id; //插入多对多关系 { Factor2 f=new Factor2(); f.setRoles(new ArrayList<Role>()); f.getRoles().add(r1); f.getRoles().add(r2); f.setSub1(new ArrayList<Sub1>()); Sub1 s1=new Sub1("Sub1-1"); Sub1 s2=new Sub1("Sub1-2"); f.getSub1().add(s1); f.getSub1().add(s2); db.insertCascade(f); id=f.getId(); } //查询多对多关系 System.out.println("===================查询多对多关系=================="); Factor2 f2=db.load(Factor2.class,id); assertEquals(2, f2.getRoles().size()); assertEquals(2, f2.getSub1().size()); // System.out.println("===================使用pageselect查询多对多关系=================="); { List<Factor2> list=db.pageSelect(QB.create(Factor2.class), Factor2.class, 4).next(); System.out.println(list); System.out.println(list.get(0).getRoles()); } //清除后重添加一个 System.out.println("===================清除后重新添加一个=================="); f2.getRoles().clear(); f2.getRoles().add(r1); db.updateCascade(f2); f2=db.load(Factor2.class,id); assertEquals(1, f2.getRoles().size()); System.out.println("===================清空Role=================="); f2.setRoles(null); db.updateCascade(f2); f2=db.load(Factor2.class,id); assertEquals(0, f2.getRoles().size()); } }