Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 具有内部联接和多对多的Hibernate标准Api_Java_Sql_Hibernate_Criteria - Fatal编程技术网

Java 具有内部联接和多对多的Hibernate标准Api

Java 具有内部联接和多对多的Hibernate标准Api,java,sql,hibernate,criteria,Java,Sql,Hibernate,Criteria,我不熟悉Hibernate和Criteria查询。 如何使用Hibernate Criteria对象实现它 SELECT stateslocalization.StateId, stateslocalization.localization AS name FROM processstate Join states ON states.id = processstate.StateId JOIN stateslocalization ON stateslocalization.StateId

我不熟悉Hibernate和Criteria查询。 如何使用Hibernate Criteria对象实现它

SELECT stateslocalization.StateId, stateslocalization.localization AS name
FROM processstate
Join states ON  states.id = processstate.StateId
JOIN stateslocalization ON stateslocalization.StateId = states.id
WHERE processstate.ProcessId = 38 and processstate.StateId = states.id AND stateslocalization.StateId = states.id
实体:

过程:

@实体
@表(name=“流程”)
公共类过程{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有int-id;
私有字符串名称;
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.PERSIST)
@可接合(
name=“processstate”,
joinColumns={@JoinColumn(name=“ProcessId”)},
inverseJoinColumns={@JoinColumn(name=“StateId”)}
)
私有国家;
//接受者和接受者。。。。。
}
声明:

@实体
@表(name=“states”)
公共阶级国家{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“id”)
私有int-id;
私有字符串名称;
@ManyToMany(mappedBy=“states”,cascade=CascadeType.PERSIST,fetch=FetchType.EAGER)
私有集进程;
@OneTONE(mappedBy=“state”)
私有国家本土化;
//接受者和接受者。。。。。
}
州本地化:

@实体
@表(name=“stateslocalization”)
公共类国家本地化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有int-id;
@OneToOne(级联=级联类型.ALL)
@JoinColumn(name=“StateId”,referencedColumnName=“id”)
私营国家;
私有字符串本地化;
//接受者和接受者。。。。。
}

我使用本机查询实现了这一点,但我不知道如何将其实现为Hibernate条件,因为我没有实体processstate(它是唯一的表)。

不要将Criteria API用于此类静态查询。使用JPQL。一旦您了解了JPQL查询的原理,即使用实体及其关联而不是表和列,您将能够在需要生成动态查询时将这些JPQL查询转换为条件查询。的可能重复项不要将条件API用于此类静态查询。使用JPQL。一旦您了解了JPQL查询的原理,即使用实体及其关联而不是表和列,您将能够在需要生成动态查询时将这些JPQL查询转换为条件查询