Wie kann ich zwei OneToMany-Beziehung zu derselben Tabelle in ActiveObjects schreiben? Warum dieser Testfall fehlschlägt?Wie zwei OneToMany-Beziehung zu derselben Tabelle in ActiveObjects schreiben
einfache Nachricht entity.
import net.java.ao.Entity;
public interface Message extends Entity{
public void setSender(Communicator sender);
public void setAcceptor(Communicator acceptor);
}
einfacher Kommunikator (Person oder Server).
import net.java.ao.Entity;
import net.java.ao.OneToMany;
public interface Communicator extends Entity {
@OneToMany
public Message[] getSendMessages();
@OneToMany
public Message[] getAcceptMessages();
}
Testfall.
1. Verbindung zu mysql von localhost.
2. Tabellenschemata erstellen.
3.Erstellen Sie zwei Kommunikatoren von Sender und Akzeptor.
4. Erstellen Sie 10 Nachrichten als setSender (Sender) und setAcceptor (Akzeptor).
5. Überprüfen Sie die Anzahl der Nachrichten, die der Absender akzeptiert hat. es sollte Null sein.
6. aber Junit sagt, es ist 10, aber nicht Null.
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();
}
}
}
Danke.
Duplizieren von [diese Frage] (http://stackoverflow.com/questions/669828/how-to-have-2-collections-of-the-same-type-in-jpa) – nobeh
ao muß nicht @JoinTable Anmerkung. http://activeobjects.java.net/0.8.2/api/net/java/ao/package-summary.html – KenichiYamamoto
@nobeh JPA und ActiveObjects, obwohl ähnlich, sind zwei verschiedene ORMs. –