Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 如何从实体中获取嵌入ID_Java_Oracle_Jpa - Fatal编程技术网

Java 如何从实体中获取嵌入ID

Java 如何从实体中获取嵌入ID,java,oracle,jpa,Java,Oracle,Jpa,我对我的表/实体有一个问题 我的SQL表如下所示: 表1: ID1表pk 属性 表2: ID2表pk 属性 表3: ID1表pk ID2表pk 日期 好的。。现在,我在Java JPA中拥有以下实体: 表1 @Entity @Inheritance(strategy = InheritanceType.JOINED) public abstract class Table1 { private Long table1Id protected Table1() { super(); }

我对我的表/实体有一个问题

我的SQL表如下所示:

表1:

ID1表pk 属性

表2:

ID2表pk 属性

表3:

ID1表pk ID2表pk 日期

好的。。现在,我在Java JPA中拥有以下实体:

表1

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Table1 {

private Long table1Id

protected Table1() {
    super();
}

protected Table1(Long table1Id) {
    super();
    this.table1Id = table1Id;
}

public boolean equals(Object obj) {
    if (obj instanceof Table1) {
        Table1 fach = (Table1) obj;
        return this.getTable1Id().equals(fach.getTable1Id());
    } else {
        return false;
    }
}

@Id
@Column(name = "IDTABLE1")
public Long getTable1Id() {
    return table1Id;
}

public void setTable1Id(Long table1Id) {
    this.table1Id = table1Id;
}
}
表2

@Entity
public class Table2 {

private Long table2Id

protected Table2() {
    super();
}

protected Table2(Long table2Id) {
    super();
    this.table2Id = table2Id;
}

public boolean equals(Object obj) {
    if (obj instanceof Table2) {
        Table2 fach = (Table2) obj;
        return this.getTable2Id().equals(fach.getTable2Id());
    } else {
        return false;
    }
}

@Id
@Column(name = "IDTABLE2")
public Long getTable2Id() {
    return table12d;
}

public void setTable2Id(Long table2Id) {
    this.table2Id = table2Id;
}
}
表3

@Entity
public class Table3 implements Serializable {

private static final long serialVersionUID = 1L;

private Table3Id table3Id;
private Date date;

public Table3() {
    super();
}

public Table3(Date date, Table1 table1, Table2 table2) {
    super();
    this.date = date;
    this.table3Id = new Table3Id(table1, table2);
}

@EmbeddedId
public Table3Id getTable3Id() {
    return table3Id;
}

public void setTable3Id(Table3Id table3Id) {
    this.table3Id = table3Id;
}

@Column(name = "date", nullable = true)
public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}
}
表3id

@Embeddable
public class Table3Id implements Serializable {

private static final long serialVersionUID = 1L;

private Table1 table1;
private Table2 table2;

public Table3Id() {
}

public Table3Id(Table1 table1, Table2 table2) {
    this.table1 = table1;
    this.table2 = table2;
}

public Table1 getTable1() {
    return table1;
}

public void setTable1(Table1 table1) {
    this.table1 = table1;
}

public Table2 getTable2() {
    return table2;
}

public void setTable2(Table2 table2) {
    this.table2 = table2;
}
}
好的。。。现在如何从Dao对象中获取Table3属性

编辑

类似,但我有实体f.e.表1表1;表2我的实体中的表2和不长的表1;长表2id

编辑

我认为@Niemand的查询是正确的,但我得到以下例外:

Caused by: org.hibernate.MappingException: Could not determine type for: Table1, at table: Table3, for columns: [org.hibernate.mapping.Column(table1)]
Query Query=entityManager.createquery从表3中选择t.table3Id.table1、t.table3Id.table2作为t


这是您想要的吗?

不清楚这些实体之间的确切关系是什么?如果T2使用联合策略扩展T1,它们通常会共享一个主键。T1或T2是否与T3有一对多关系?表3有一个复合主键table1id+table2id,并且有一个与table1id和table2id对应的外键contain,table2i表示与IdTable1和IdTable1对应的外键containIdTable2@AlanHay请查看我的editsCaused by:org.hibernate.MappingException:无法确定表1的类型,在表3中,对于列:[org.hibernate.mapping.ColumntTable1]
Caused by: org.hibernate.MappingException: Could not determine type for: Table1, at table: Table3, for columns: [org.hibernate.mapping.Column(table1)]