Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠多外键_Java_Sql_Hibernate - Fatal编程技术网

Java 休眠多外键

Java 休眠多外键,java,sql,hibernate,Java,Sql,Hibernate,我刚开始冬眠 我的问题是解析多个外键的值。我可以用SQL来做,但是Hibernate注释让我发疯 例如,我得到了这两张表: 表移动集 MoveSet\u ID 冲床1 冲床2 抓斗1 抓斗2 抓斗3 格拉普4 桌子移动 移动标识 名字 损坏 移动类型标识 反机会 冲头和抓图都是外键,用于引用Move_ID 我的目标是执行一个session.createQuery(“来自移动集”).list()和,以获取具有移动名称而不是ID的移动集 这在Hibernate中可能吗 package hib

我刚开始冬眠

我的问题是解析多个外键的值。我可以用SQL来做,但是Hibernate注释让我发疯

例如,我得到了这两张表:

表移动集
  • MoveSet\u ID
  • 冲床1
  • 冲床2
  • 抓斗1
  • 抓斗2
  • 抓斗3
  • 格拉普4
桌子移动
  • 移动标识
  • 名字
  • 损坏
  • 移动类型标识
  • 反机会
冲头和抓图都是外键,用于引用Move_ID

我的目标是执行一个
session.createQuery(“来自移动集”).list()和,以获取具有移动名称而不是ID的移动集

这在Hibernate中可能吗

package hibernate;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "Moves")
public class Moves implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -1522367877613954187L;
private int id;
private String name;
private int damage;
private int movetype_id;
private int counterchance;

public Moves() {

}

public Moves(int id, String name, int damage, int movetype_id,
        int counterchance) {
    this.id = id;
    this.name = name;
    this.damage = damage;
    this.movetype_id = movetype_id;
    this.counterchance = counterchance;
}

@Id
@Column(name = "Move_ID")
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

@Column(name = "Name")
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Column(name = "Damage")
public int getDamage() {
    return damage;
}

public void setDamage(int damage) {
    this.damage = damage;
}

@Column(name = "MoveType_ID")
public int getMovetype_id() {
    return movetype_id;
}

public void setMovetype_id(int movetype_id) {
    this.movetype_id = movetype_id;
}

@Column(name = "Counterchance")
public int getCounterchance() {
    return counterchance;
}

public void setCounterchance(int counterchance) {
    this.counterchance = counterchance;
}

@Override
public String toString() {
    return "Moves - Name: " + name;
}
}


是的,这是可能的,事实上ORM和Hibernate的全部目的是获取对象(您的值),而不是普通ID。您的映射错误。您应该通过注释映射您的关系(我假设拳和格斗是移动的),如
@OneToOne
@OneToMany
,以及
@JoinColumn
,因此您的字段不需要此注释

@Column(name = "Graple_1")
public int getGraple_1() {
    return graple_1;
}
应该是

@ManyToOne
@JoinColumn(name="Graple1")
public Move getGraple_1() {
    return graple_1;
}

通过这种方式,您将获得相关的
移动
对象,并从中获取您想要的任何数据,以及请求的
名称

您可以向我们展示一些代码吗?将代码添加到原始帖子中这解决了我的问题。谢谢你,很抱歉这么晚才回答。
@ManyToOne
@JoinColumn(name="Graple1")
public Move getGraple_1() {
    return graple_1;
}