Tenho as seguintes tabelas:
machine_id
id, game, mac_adress, math_rules e is_locked
games
id, title
Para pegar todas as machines usei:
manager.createQuery("Select p from " + Machine.class.getName() + " p", Machine.class).getResultList();
Então os games vieram com os devidos códigos, mas eu gostaria que, ao fazer um machine.getGame
, viesse o nome do game. Tem como o select ja vir relacionado com o game da tabela games?
E como ficaria isso em meus models? Este é o meu model Machine. Não fiz o game, pois acho que terei que relacionar os 2 para fazer esse join.
@Entity
@Table(name = "machine_id")
public class Machine {
@Id
private int id;
private int game;
@Column(name = "mac_address")
private String macAddress;
@Column(name = "math_rules")
private int mathRules;
@Column(name = "is_locked")
private int isLocked;
Basta mapear o relacionamento na classe Machine
, assim:
@ManyToOne
@JoinColumn(name = "game", referencedColumnName = "id")
private Game game;
Com isso, você conseguirá recuperar o nome assim:
machine.getGame().getTitle();
1 curtida
Machine
@Entity
@Table(name = "machine_id")
public class Machine {
@Id
private int id;
@JoinColumn(name = "game", referencedColumnName = "id")
private Game game;
@Column(name = "mac_address")
private String macAddress;
@Column(name = "math_rules")
private int mathRules;
@Column(name = "is_locked")
private int isLocked;
Game
@Entity
@Table(name = "games")
public class Game {
@Id
private int id;
private String title;
é só isso? como a classe machine tem esse link com a games?
erro
org.hibernate.MappingException: Could not determine type for: com.ambra.report.models.Game, at table: machine_id, for columns: [org.hibernate.mapping.Column(game)]
estou fazendo assim na jsp
<tr>
<td><input type="checkbox" id="${machine.id }" class="filled-in"
value="${machine.id }" name="machineId[]" /> <label for="${machine.id }"></label></td>
<td><a>${machine.id }</a></td>
<td>Game</td>```
no game uso o getGame?
```<td><a>${machine.getGame().title }</a></td>``` ?
Faltou o @ManyToOne
no atributo game na classe Machine.
agora parece que foi, mas da erro na jsp. Como da pra acessar?
desse jeito aparece esse erro.
javax.el.PropertyNotFoundException: Property 'game' not found on type com.ambra.report.models.Machine```
Você criou o get
e set
do atributo game
na classe Machine
?
agora deu certinho!
obrigado pelo help. Não sabia que o hiber navegava por getters e setters.
vlw!
estou com outra duvida, mas vou abrir em outro topico. Melhor separar
1 curtida