ActiveObjects에서 같은 테이블에 두 개의 OneToMany 관계를 쓰려면 어떻게해야합니까? 이 테스트 사례가 실패하는 이유는 무엇입니까?ActiveObjects에서 동일한 테이블에 두 개의 OneToMany 관계를 쓰는 방법
간단한 메시지 엔터티.
import net.java.ao.Entity;
public interface Message extends Entity{
public void setSender(Communicator sender);
public void setAcceptor(Communicator acceptor);
}
간단한 커뮤니 케 이터 (개인 또는 서버).
import net.java.ao.Entity;
import net.java.ao.OneToMany;
public interface Communicator extends Entity {
@OneToMany
public Message[] getSendMessages();
@OneToMany
public Message[] getAcceptMessages();
}
테스트 케이스.
1. localhost의 mysql에 연결하십시오.
2. 테이블 스키마를 만듭니다.
3. 발신자와 수신자의 두 명의 커뮤니케이터를 생성하십시오.
4. setSender (보낸 사람) 및 setAcceptor (받는 사람)로 10 개의 메시지를 만듭니다.
5. 보낸 사람이 수락 한 메시지 수를 확인하십시오. 0이어야합니다.
6.하지만 junit은 10이지만 0은 아니라고 말합니다.
import java.sql.SQLException;
import junit.framework.TestCase;
import net.java.ao.EntityManager;
public class AOTest2 extends TestCase{
public void test() {
String db_host = "localhost";
String db_database = "test";
String db_login = "root";
String db_password = "";
EntityManager m = new EntityManager("jdbc:mysql://" + db_host + "/" + db_database, db_login, db_password);
try {
m.migrate(Communicator.class, Message.class);
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
Communicator sender = m.create(Communicator.class);
Communicator acceptor = m.create(Communicator.class);
sender.save();
acceptor.save();
for (int i = 0; i < 10; i++) {
Message mes = m.create(Message.class);
mes.setAcceptor(acceptor);
mes.setSender(sender);
mes.save();
}
assertEquals(true, sender.getAcceptMessages().length == 0);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
고맙습니다.
[이 질문은] 중복 (0120) (이 페이지는 자동으로 영어에서 번역되었습니다.) – nobeh
@JoinTable 주석. http://activeobjects.java.net/0.8.2/api/net/java/ao/package-summary.html – KenichiYamamoto
@nobeh JPA와 ActiveObjects는 비슷하지만 두 개의 서로 다른 ORM입니다. –