이것은 이전에 작동했기 때문에 이상한 문제입니다. 그래서 저는 게임과 개발자의 두 클래스를가집니다. 그들은 많은 관계를 가지고 있습니다. 지속성 단위는 자동으로 game_developer 테이블을 만듭니다. 따라서 3 개의 테이블이 있습니다 : 게임 개발자와 game_developer. 데이터베이스에 정보를 입력 할 때. 테이블 게임과 개발자는 정상적으로 값을 얻을 수 있지만 game_developer 테이블은 비어있게됩니다. 그래서 그 관계는 인정되지 않습니다. 또한 webapp을 실행할 때 테이블 안의 모든 것을 삭제해야합니다. 개발자는 괜찮아졌지만 게임은 여전히 존재합니다.지속성 단위가 많은 관계를 만들지 못함
올바른 방향으로 밀었을 때 감사드립니다.
try {
gameOrganizer = (GameOrganizer) getServletContext().getAttribute("database");
Game game = new Game("Counter Strike: source");
Game game2 = new Game("Battlefield: bad company 3");
Game game3 = new Game("Killing floor");
Developer devel = new Developer("valve");
Developer devel2 = new Developer("EA Games");
Developer devel2b = new Developer("DICE");
Developer devel3 = new Developer("Ubisoft");
//The GameOrganizer is the controller between the model en the view.
//The view being the website.
//So gameOrganizer.addGame(game) will persist the object to the database.
gameOrganizer.addGame(game);
gameOrganizer.addGame(game2);
gameOrganizer.addGame(game3);
gameOrganizer.addDeveloper(devel);
gameOrganizer.addDeveloper(devel2);
gameOrganizer.addDeveloper(devel2b);
gameOrganizer.addDeveloper(devel3);
game.addDeveloper(devel);
devel.getGames().add(game);
game2.addDeveloper(devel2);
devel2.getGames().add(game2);
game2.addDeveloper(devel2b);
devel2b.getGames().add(game2);
game3.addDeveloper(devel3);
devel3.getGames().add(game3);
} catch (DatabaseException ex) {
Logger.getLogger(GameController.class.getName()).log(Level.SEVERE, null, ex);
} catch (DomainException ex) {
Logger.getLogger(GameController.class.getName()).log(Level.SEVERE, null, ex);
}
게임 클래스 :
@Entity
public class Game implements Serializable{
private String gameNaam;
private double prijs;
@ManyToMany(mappedBy = "games")
private Collection<Developer> developers = new ArrayList<Developer>();
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
public Game(){};
.
.
//methods
.
.
}
개발자 클래스
는데이비드
초기화에게, 사전에 감사합니다
지속성 단위 :
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="GameDatabaseSitePU" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>domainmodel.Developer</class>
<class>domainmodel.Game</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="toplink.jdbc.user" value="app"/>
<property name="toplink.jdbc.password" value="app"/>
<property name="toplink.jdbc.url" value="jdbc:derby://localhost:1527/GameDatabase;create=true"/>
<property name="toplink.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="toplink.ddl-generation" value="drop-and-create-tables"/>
</properties>
</persistence-unit>
</persistence>
정말 고마워요. 그것으로 완벽하게 해결되었습니다. –