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

如何在Spring启动中显示mysql视图?

温浩大
2023-03-14

我有一个Spring Boot CRUD应用程序正在运行,只要我使用常规的MySQL表。但是我需要显示来自多个表的数据,所以我创建了一个MySQL视图。但是现在出现以下错误:

创建在类路径资源[org/spring framework/boot/auto configure/ORM/JPA/hibernate JPA configuration . class]中定义的名为“entityManagerFactory”的bean时出错:调用init方法失败;嵌套异常为org . hibernate . annotation exception:没有为实体指定标识符:net . tekknow . me daverter . domain . appointment view

我遵循了这个例子:https://www.javabullets.com/calling-database-views-from-spring-data-jpa/

以下是域对象:

package net.tekknow.medaverter.domain;

import java.io.Serializable;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.Size;

@Entity
@Table(name = "vw_appointments")
public class AppointmentView implements Serializable {
    @Size(max = 32)
    @Column(name="Date")
    public String date;

    @Column(name="Physician")
    public String physician;

    @Column(name="LabCollected")
    public Timestamp labCollected;

    @Column(name="Note")
    public String note;

    public String getDate_time() {
        return date;
    }
    public String getPhysician() {
        return physician;
    }
    public Timestamp getDatetime_collected() {
        return labCollected;
    }
    public String getNote() {
        return note;
    }
}

下面是视图的mysql查询,只是为了向您展示它的工作原理:

关系型数据库

这是服务代码:

@Service
@Transactional
public class AppointmentViewService {

    @Autowired
    AppointmentViewRepository repo;

    public List<AppointmentView> listAll() {
        return repo.findAll();
    }      
}

下面是存储库代码:

public interface AppointmentViewRepository extends JpaRepository<AppointmentView,Integer> {}

Hibernate不处理视图吗?建议?

共有1个答案

苏畅
2023-03-14

所有内容都在错误消息中说明:

没有为实体指定标识符:net . tekknow . med averter . domain . appointment view

设计视图,使其具有 1 列,可以使用@Id批注将其映射为实体的标识符字段。

您还可以将@org.hibernate.annotations.不可变注解添加到您的实体中,以确保HiberNate不会尝试传播您可以对您的实体所做的更改

@Entity
@Table(name = "vw_appointments")
// Prevent changes from being applied by Hibernate
@org.hibernate.annotations.Immutable
public class AppointmentView implements Serializable {
    // Identifier. Has to be Integer as you implement JpaRepository<AppointmentView,Integer>
    @Id
    @Column(name="Appointment_Id")
    private Integer appointmentId;

    public Integer getAppointmentId() {
        return this.appointmentId;
    }

    public void setAppointmentId(Integer appointmentId) {
        this.appointmentId = appointmentId;
    }

    // Public attributes ???. 
    // If it is not mandatory for technical reasons, prefer private attributes + getter/setter
    @Size(max = 32)
    @Column(name="Date")
    public String date;

    @Column(name="Physician")
    public String physician;
    ...
}
 类似资料:
  • 如何在活动启动上显示“滑动菜单”?我正在使用导航抽屉显示幻灯片菜单如下代码 `public class MainActivity extends Base_Activity{private DrawerLayout MDrawerLayout;public static ListView MDrawerList;private ActionBarDrawerToggle MDrawerToggle

  • 问题内容: 是否可以在 Django视图中显示PDF文件,而不是使用户必须下载它才能看到它? 如果有可能,将如何做? 这是我到目前为止所拥有的 问题答案: 简而言之,如果你有一个PDF文件,并且想通过Django视图输出它,那么你要做的就是将文件内容转储到响应中并以适当的mimetype发送。 你可能可以直接返回响应而无需指定Content-Disposition,但这可以更好地表明你的意图,并且

  • 我的类是用Spring Boot Java写的,我用Swagger 2生成它们的文档。我使用的是spring-fox 2 . 9 . 0版本。 为了在Swagger UI中显示验证约束(@min、@max、@pattern等),我在我的application.java中添加了以下几行,其中showExtensions(true),但这不起作用。Swagger UI中的预期结果 我应该改变什么才能得

  • 问题内容: 我需要帮助在游戏场景中呈现警报视图。我目前正在努力做到这一点,例如GameScene.Swift不是标准的ViewController。如果有帮助,我需要这样做,因为我需要用户输入一个值,该值用作游戏中球Sprite Kit节点的坐标。输入只是一个标准整数,因此这不是问题。也欢迎通过警报视图实现此操作的其他任何想法。 那是在GameViewController文件中 谢谢 问题答案:

  • eclipse中的package explorer只显示在Java选项卡(透视图)上,但我也希望在调试模式下显示它。有办法做到吗?我在调试模式下的Windows->Show view中找不到它,但在java模式下它是存在的(实际上,这是project explorer,但看起来是一样的)

  • 在我的Spring web MVC应用程序中,我计划在我的jsp视图上显示一些JFree图表,我不知道如何做到这一点,因为我的第一个想法对我不起作用,生成一个图像,然后从文件夹中检索它。 现在我想,控制器能够直接回放图像吗?假设这是我的服务接口: 我可以做这样的事情吗?我如何从我的jsp调用这个映像?