网站调试报错 Struts Problem Report Struts has detected an unhandled exception (详见补充!!!)

网站调试报错 Struts Problem Report Struts has detected an unhandled exception (详见补充!!!),第1张

连接数据库的问题:Access denied for user 'root'@'localhost' (using password: YES)

Cannot open connection

可能是连接数据库的密码错误或者数据库设置的不能用这个用户连接,你找找看是不是这个原因,

persistentxml配置

<xml version="10" encoding="UTF-8">

<persistence xmlns=">

1xml

xml version="10" encoding="UTF-8">

<beans xmlns=">

该项目是Spring Data JPA项目的扩展,允许访问由Hibernate Envers管理的实体修订

hibernate的envers模块提供了一整套机制可以用来记录数据的变更。这里简单介绍一下。

1自动配置

@SpringBootApplication

@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBeanclass)

@EnableJpaAuditing(auditorAwareRef = "auditorAwareImpl")

public class EnversDemoApplication {

public static void main(String[] args) {

SpringApplicationrun(EnversDemoApplicationclass, args);

}

}

这里配置@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBeanclass)表示开启envers模块。

2Audited注解

@Entity

@Audited

public class Book extends AuditableEntity{

@javaxpersistenceId

@GeneratedValue(strategy = GenerationTypeAUTO)

private Long id;

private String title;

private String author;

private String description;

private long price;

private boolean valid;

// getter and setter

}

使用@Audited标注一下这个实体类需要审计。

继承RevisionRepository

public interface BookDao extends RevisionRepository,JpaRepository {

}

通过继承RevisionRepository获取查找revisions的查询方法,主要如下:

@NoRepositoryBean

public interface RevisionRepository> {

Revision findLastChangeRevision(ID var1);

Revisions findRevisions(ID var1);

Page> findRevisions(ID var1, Pageable var2);

Revision findRevision(ID var1, N var2);

}

这里的N是指变更版本号的类型,一般Integer够用,如果觉得不够用可以改为Long类型。这里的T就是实体类。ID就是实体类的主键类型。

查询变更

经过以上配置之后,就可以正常记录变更的每个版本了,可以通过如下方法来查询,比如:

Revisions revision = bookDaofindRevisions(id);

List> data = revisiongetContent();

这里的id为实体的id

revision的表结构

hibernate默认以实体类后缀_AUD来记录每个变更的版本,比如

-- ----------------------------

-- Table structure for book_aud

-- ----------------------------

DROP TABLE IF EXISTS "public""book_aud";

CREATE TABLE "public""book_aud" (

"id" int8 NOT NULL,

"rev" int4 NOT NULL,

"revtype" int2,

"author" varchar(255) COLLATE "default",

"description" varchar(255) COLLATE "default",

"price" int8,

"title" varchar(255) COLLATE "default",

"valid" bool

)

WITH (OIDS=FALSE);

ALTER TABLE "public""book_aud" OWNER TO "postgres";

-- ----------------------------

-- Primary key structure for table book_aud

-- ----------------------------

ALTER TABLE "public""book_aud" ADD PRIMARY KEY ("id", "rev") NOT DEFERRABLE INITIALLY IMMEDIATE;

-- ----------------------------

-- Foreign keys structure for table book_aud

-- ----------------------------

ALTER TABLE "public""book_aud" ADD CONSTRAINT "fk2u9iq76nh69r6f989ae7xft9" FOREIGN KEY ("rev") REFERENCES "public""revinfo" ("rev") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;

如果想改表后缀的话,可以通过orghibernateenversaudit_table_suffix的属性进行配置。里头的rev字段表示revision的版本号,一般全局递增。revtype字段表示 *** 作类型,0表示新增,1表示更新,2表示删除。

另外还有一个表是revinfo,记录每个变更的版本号和时间:

-- ----------------------------

-- Table structure for revinfo

-- ----------------------------

DROP TABLE IF EXISTS "public""revinfo";

CREATE TABLE "public""revinfo" (

"rev" int4 NOT NULL,

"revtstmp" int8

)

WITH (OIDS=FALSE);

ALTER TABLE "public""revinfo" OWNER TO "postgres";

-- ----------------------------

-- Primary key structure for table revinfo

-- ----------------------------

ALTER TABLE "public""revinfo" ADD PRIMARY KEY ("rev") NOT DEFERRABLE INITIALLY IMMEDIATE;

自定义revision entity

如果默认的envers的实现不满足你的要求的话,使用@RevisionEntity注解,替换@Audited,然后自定义listener,比如

@Entity

@RevisionEntity( ExampleListenerclass )

public class ExampleRevEntity extends DefaultRevisionEntity {

private String username;

public String getUsername() { return username; }

public void setUsername( String username ) { thisusername = username; }

}

public class ExampleListener implements RevisionListener {

public void newRevision( Object revisionEntity ) {

ExampleRevEntity exampleRevEntity = ( ExampleRevEntity ) revisionEntity;

Identity identity =

(Identity) ComponentgetInstance( "orgjbossseamsecurityidentity" );

exampleRevEntitysetUsername( identitygetUsername() );

}

}

具体的这里就不细讲了,具体可以参考hibernate。

以上就是关于网站调试报错 Struts Problem Report Struts has detected an unhandled exception (详见补充!!!)全部的内容,包括:网站调试报错 Struts Problem Report Struts has detected an unhandled exception (详见补充!!!)、springmvc spring hibernate 怎么配置连接两个数据库、如何解决jpaTemplate和jdbcTemplate 共享一个事务处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9297240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存