当前位置: 首页 > 知识库问答 >
问题:

hibernate中数据库视图的映射和POJO类创建

宋勇
2023-03-14

所有我使用Hibernate和微软SQL服务器。

我有一个视图在我的数据库如下

create view [dbo].[Pat_Det] As  Select patientid As pid,title, fname, mname,lname,dob,gender,mstatus,idtype,idno,mtongue,emailid,smsstatus,mailstatus,status,regcenter,regdate from dbo.LAB_patientreg WHERE 1=1

对于这个视图,我创建了一个类似这样的Pojo类

package POJO;

import java.io.Serializable;
import java.util.Date;

public class AddressViewPojo implements Serializable{

    String pid, title, fname, mname, lname, sex, mstatus, idtype, aadhar_no, emailid, regcenter;
    Date dob, date_created;
    int allow_sms, allow_email, status;

    public String getPid() {
        return pid;
    }

    public void setPid(String pid) {
        this.pid = pid;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public String getMname() {
        return mname;
    }

    public void setMname(String mname) {
        this.mname = mname;
    }

    public String getLname() {
        return lname;
    }

    public void setLname(String lname) {
        this.lname = lname;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getMstatus() {
        return mstatus;
    }

    public void setMstatus(String mstatus) {
        this.mstatus = mstatus;
    }

    public String getIdtype() {
        return idtype;
    }

    public void setIdtype(String idtype) {
        this.idtype = idtype;
    }

    public String getAadhar_no() {
        return aadhar_no;
    }

    public void setAadhar_no(String aadhar_no) {
        this.aadhar_no = aadhar_no;
    }

    public String getEmailid() {
        return emailid;
    }

    public void setEmailid(String emailid) {
        this.emailid = emailid;
    }

    public String getRegcenter() {
        return regcenter;
    }

    public void setRegcenter(String regcenter) {
        this.regcenter = regcenter;
    }

    public Date getDob() {
        return dob;
    }

    public void setDob(Date dob) {
        this.dob = dob;
    }

    public Date getDate_created() {
        return date_created;
    }

    public void setDate_created(Date date_created) {
        this.date_created = date_created;
    }

    public int getAllow_sms() {
        return allow_sms;
    }

    public void setAllow_sms(int allow_sms) {
        this.allow_sms = allow_sms;
    }

    public int getAllow_email() {
        return allow_email;
    }

    public void setAllow_email(int allow_email) {
        this.allow_email = allow_email;
    }

    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }
}

像这样映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="true" default-lazy="false">
  <class name="POJO.AddressViewPojo"  table="Pat_Det">
      <property name="aadhar_no" column="aadhar_no"></property>
      <property name="allow_email" column="allow_email"></property>
      <property name="allow_sms" column="allow_sms"></property>
      <property name="date_created" column="date_created"></property> 
      <property name="dob" column="dob"></property>
      <property name="emailid" column="emailid"></property>
      <property name="fname" column="emailid"></property>
      <property name="idtype" column="idtype"></property>
      <property name="lname" column="lname"></property>
      <property name="mname" column="mname"></property>
      <property name="mstatus" column="mstatus"></property>
      <property name="pid" column="pid"></property>
      <property name="regcenter" column="regcenter"></property>
      <property name="sex" column="sex"></property>
      <property name="status" column="status"></property>
      <property name="title" column="title"></property>          
  </class>
</hibernate-mapping>

但当我验证映射文件时,会出现如下错误

XML验证开始了。

Checking file:/E:/akshai/TREVALAB/src/MAPPING/AddressViewPojo.hbm.xml...

The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)". [21] 

XML validation finished.

谁能帮我解决这个问题。

提前谢谢。

共有1个答案

太叔涵亮
2023-03-14

你的映射绝对需要一个id。我想PID就是你的id,所以你应该这样写:

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="true" default-lazy="false">
  <class name="POJO.AddressViewPojo"  table="Pat_Det">
      <id name="pid" column="pid"></id> <!-- Right here -->
      <property name="aadhar_no" column="aadhar_no"></property>
      <property name="allow_email" column="allow_email"></property>
      <property name="allow_sms" column="allow_sms"></property>
      <property name="date_created" column="date_created"></property> 
      <property name="dob" column="dob"></property>
      <property name="emailid" column="emailid"></property>
      <property name="fname" column="emailid"></property>
      <property name="idtype" column="idtype"></property>
      <property name="lname" column="lname"></property>
      <property name="mname" column="mname"></property>
      <property name="mstatus" column="mstatus"></property>
      <property name="regcenter" column="regcenter"></property>
      <property name="sex" column="sex"></property>
      <property name="status" column="status"></property>
      <property name="title" column="title"></property>          
  </class>
</hibernate-mapping>
 类似资料:
  • 问题内容: 我的数据库中有一个表,表中有一个名为boolean 的列。我想在已设置为的行中进行搜索,因此我在数据库(MySQL)中创建了一个视图。现在,我要查询此视图(名称为),而不是查询表。 我是否需要在hibernatecfg文件中为此视图添加声明?另外,是否需要创建另一个为此命名的Java类? 问题答案: Hibernate可以像对待任何表一样对待视图。只需根据该视图(如您所说)定义一个实体

  • 我编写了一个映射,如下所示: 当我运行应用程序时,会出现如下错误: 2012-05-15 17:12:38,651--WARN--失败的模式语句:创建表雇员(Id整数不为空auto_increment,版本日期时间不为空,FirstName nvarchar(300),LastName nvarchar(300),雇员类型nvarchar(300),主键(Id),唯一(firstName,last

  • 问题内容: 输入: 客户声称,查询某些数据时应用程序(.NET)返回的数据与客户直接查看数据表时返回的数据不同。 我了解可能有多种原因,并且在完全不同的地方。我的目的不是在这里解决问题,而是向经验丰富的DBA和DB开发人员询问是否: VIEW是否可能显示与基础表不匹配的数据? 有哪些可能的原因/原因? 如果表确实没有,视图上的UPDATE语句是否可以导致将来的SELECT返回“更新的”数据? 可能

  • 本文向大家介绍在SAP ABAP中创建数据库视图,包括了在SAP ABAP中创建数据库视图的使用技巧和注意事项,需要的朋友参考一下 在ABAP中,可以使用功能模块-DDIF_VIEW_PU T和DDIF_VIEW_ACTIVATE来激活视图。应该正确定义所有表参数,否则可能导致创建过程出错。 DDIF_VIEW_PUT-用于在ABAP词典中写入视图的接口。 您可以参考以下链接以了解更多详细信息-

  • Java 8在这里使用Apache POI 4.1将Excel(XLSX)文件加载到内存中,并将Java Bean/POJO列表写回新的Excel文件。 对我来说,一个Excel文件(至少是我正在处理的文件)实际上是一个POJO列表,每一行都是POJO的不同实例,每一列都是该实例的不同字段值。观察: 在这里,我可能有一个名为Car的POJO,上面的示例电子表格是一个列表 因此,我有一个功能代码,可

  • 主要内容:数据和维度,visualMap 组件,实例,视觉映射方式的配置,实例 1,实例 2数据可视化简单来讲就是将数据用图表的形式来展示,专业的表达方式就是数据到视觉元素的映射过程。 ECharts 的每种图表本身就内置了这种映射过程,我们之前学习到的柱形图就是将数据映射到长度。 此外,ECharts 还提供了 visualMap 组件 来提供通用的视觉映射。visualMap 组件中可以使用的视觉元素有: 图形类别(symbol) 图形大小(symbolSize) 颜色(color)