我已经使用注释创建的域对象,现在我需要写来获取一些SQL查询/插入/自/至多个表更新数据。命名SQL查询
有没有办法仅保留SQL查询中的hbm.xml文件命名查询,因为使用注释已经创建的域对象,我也不需要做的是在XML方式。如果可能,那么需要遵循哪些步骤,请咨询。
在此先感谢。
我已经使用注释创建的域对象,现在我需要写来获取一些SQL查询/插入/自/至多个表更新数据。命名SQL查询
有没有办法仅保留SQL查询中的hbm.xml文件命名查询,因为使用注释已经创建的域对象,我也不需要做的是在XML方式。如果可能,那么需要遵循哪些步骤,请咨询。
在此先感谢。
是的,你可以使用波纹管标记在XML文件中
<sql-query name="Myquery">
select * from YourTableName
</sql-query>
检查这个例子 http://www.java4s.com/hibernate/example-on-hibernate-named-queries/
中的hbm.xml首先定义一个SQL查询,如:
<sql-query name="persons">
<return alias="person" class="eg.Person"/>
Select person.NAME AS {person.name},person.AGE AS {person.age},person.SEX AS {person.sex} FROM PERSON person Where person.NAME LIKE :namePattern
</sql-query>
然后由statment的名字取,
List people = sess.getNamedQuery("persons").setString("namePattern" ,namePattern)
.setMaxResults(50)
.list();
的另一种方式,则SQL查询元素是不需要的,直接写Java代码:
名单猫= sess.createSQLQuery(
"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id ")
.addEntity("cat" , Cat. class) // add entity
.addJoin("kitten" , "cat.kittens ") // add related entity
.list();
也许帮助你:)
我有一个XML文件中使用命名查询,这里是查询:SELECT appl.applicant_id为applicantId, \t appl.airport_id为airportId, \t appl.first_name的名字, \t appl.ssn作为SSN FROM申请人申请,enroll_request注册 WHERE enroll.applicant_id = appl.applicant_id \t和enroll.application_id =:的applicationID。我的XML文件应该如何? –
这是我在其中引发错误的XML项: <冬眠映射> \t <进口类= “com.dtis.dac.domain.Applicant”/> \t <进口类=“com.dtis.dac。 domain.EnrollmentRequest “/> \t \t <查询名称=” getUniqueApplicant“> <![CDATA [ \t \t \t SELECT appl.applicant_id如applicantId, \t \t \t \t appl.airport_id如airportId, \t \t \t \t appl.first_name如名字, \t \t \t \t appl.ssn作为SSN \t \t \t FROM申请人申请,enroll_request注册 \t \t \t WHERE enroll.applicant_id =申请applicant_id \t \t \t和enroll.application_id =:的applicationID \t \t]]> \t 休眠映射> –
我有此查询打印在consode:休眠: SELECT appl.applicant_id如applicantId, 申请.airport_id如airportId, appl.first_name如名字, appl.ssn作为SSN FROM 申请人申请, enroll_request注册 WHERE 登记.applicant_id = appl.applicant_id and enroll.application_id =?当我使用数据库编辑器(如SQL服务器mngmnt studio)测试它时会起作用,但会失败地说:org.hibernate.exception.SQLGrammarException:无效的列名称applicant_id。请帮帮我。 –
我的目标是使用具有名称查询xml的带注释的域对象,如何实现此目的?请帮忙。 –
解决。您需要将表中的所有列放入select子句中,即使您只需要很少的列,因为它会填充完整的域对象。 –