Недавно я опубликовал кого-то о заполнении JTable, который теперь полностью функционален. Однако сейчас я застрял на чем-то другом, я надеюсь достичь двух конкретных целей с помощью этой темы.
Один из них - решить мою проблему, а другой - подготовить ответ, когда другие наткнутся на ту же проблему, потому что я еще не нашел правильного ответа на этот вопрос.
у меня следующий сценарий
Две таблицы:
games
id pk int
жанр int
название varchar ....
жанр
id pk int
имя varchar ..
У одной игры может быть только один жанр, но в одном жанре может быть много игр.
Я использую Eclipse в качестве своей IDE и eclipselink в качестве поставщика JPA.
Я создал классы с помощью мастера сущностей, предоставленного eclipse, который также позволил мне определить отношения между двумя таблицами.
Отношения выглядят следующим образом:
@Entity
@Table(name="games")
public class Game implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="Id", unique=true, nullable=false)
private int id;
@Temporal( TemporalType.DATE)
@Column(name="AddDate", nullable=false)
private Date addDate;
@Lob()
@Column(name="Description", nullable=false)
private String description;
@Temporal( TemporalType.DATE)
@Column(name="ModifiedDate", nullable=false)
private Date modifiedDate;
@Temporal( TemporalType.DATE)
@Column(name="ReleaseDate", nullable=false)
private Date releaseDate;
@Column(name="Title", nullable=false, length=255)
private String title;
//bi-directional many-to-one association to Genre
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Genre", nullable=false)
private Genre genreBean;
//bi-directional many-to-one association to Publisher
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="Publisher", nullable=false)
private Publisher publisherBean;
и жанр
@Entity
@Table(name="genres")
public class Genre implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="Id", unique=true, nullable=false)
private int id;
@Column(name="Genre", nullable=false, length=150)
private String genre;
//bi-directional many-to-one association to Game
@OneToMany(mappedBy="genreBean")
private List<Game> games;
Я использую следующее, чтобы выбрать все игры
List<Game> games;
try{
TypedQuery<Game> selectGamesQuery = entityManager.createQuery("SELECT g FROM Game g", Game.class);
games = selectGamesQuery.getResultList();
} catch(Exception e) {
games = null;
System.out.println(e);
Проблема в том, что список игр не содержит названия жанра, на самом деле он пуст.
Как настроить список так, чтобы он содержал игру со следующими атрибутами: идентификатор, название, название жанра, имя издателя, дата выпуска
В моем JTable я пробовал следующее:
switch(columnIndex){
case 0:
return game.getTitle();
case 1:
return game.getPublisherBean().getPublisher();
case 2:
return game.getGenreBean().getGenre();
case 3:
return game.getReleaseDate();
}
При этом в моем JTable столбцы для случая 1 и 2 пусты, а остальные работают.
Итак, содержимое моей таблицы выглядит так
Battlefield 3 empty empty 3-3-2011
Я думаю, что с этим я должен был предоставить достаточно информации.
Пожалуйста, дайте мне знать, если есть какая-либо ошибка или ошибка в коде или, возможно, в запросе выбора, поскольку я даже не смог найти, ДОЛЖЕН ли я написать явный запрос JOIN и что он не делает этого из-за определенного отношения.
Я все еще новичок, так что будьте нежны ^^
Спасибо за уделенное время.