相关疑难解决方法(0)

如何在@HandleBeforeSave事件中获取旧实体值以确定属性是否已更改?

我正试图在一个@HandleBeforeSave事件中得到旧实体.

@Component
@RepositoryEventHandler(Customer.class)
public class CustomerEventHandler {

    private CustomerRepository customerRepository;

    @Autowired
    public CustomerEventHandler(CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }

    @HandleBeforeSave
    public void handleBeforeSave(Customer customer) {
        System.out.println("handleBeforeSave :: customer.id = " + customer.getId());
        System.out.println("handleBeforeSave :: new customer.name = " + customer.getName());

        Customer old = customerRepository.findOne(customer.getId());
        System.out.println("handleBeforeSave :: new customer.name = " + customer.getName());
        System.out.println("handleBeforeSave :: old customer.name = " + old.getName());
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用该findOne方法获取旧实体,但这将返回新事件.可能是因为当前会话中的Hibernate/Repository缓存.

有没有办法获得旧实体?

我需要这个来确定给定的属性是否被更改.如果属性是更改,我需要执行一些操作.

java hibernate spring-data-rest

22
推荐指数
3
解决办法
9465
查看次数

使用带有spring 3.1.0.release的hibernate 4.0的eventlisteners?

这些罐子都是新发布的,并且拥有最新的Java EE应用程序解决方案.但是我在hibernate.cfg.xml中指定hibernate监听器时遇到了问题.

在春季3.1.0之前,LocalSessionFactroyBean持有一个保存eventlisteners的属性.但是使用3.1.0.release没有eventlisteners地图.现在我无法在saveorupdate,postload等上保持模态对象的跟踪,因为它们不是由Spring配置的.你有想法解决这个问题吗?

java event-listener spring-3 hibernate-4.x

19
推荐指数
2
解决办法
3万
查看次数

Hibernate @Table Annotation 中的动态模式

假设您在两个环境中有四个 MySQL 数据库架构:

  • foo (产品数据库),
  • bar(正在进行的foodb重组),
  • foo_beta (测试数据库),
  • bar_beta(新结构的测试数据库)。

此外,假设您有一个在实体上带有 Hibernate 注释的 Spring Boot 应用程序,如下所示:

@Table(name="customer", schema="bar")
public class Customer { ... }

@Table(name="customer", schema="foo")
public class LegacyCustomer { ... }
Run Code Online (Sandbox Code Playgroud)

在本地开发时没有问题。您模仿本地环境中的生产数据库表名称。但随后您尝试在功能上线之前演示功能并希望将其上传到服务器。您在另一个端口上启动应用程序的另一个实例,并意识到此副本需要指向“foo_beta”和“bar_beta”,而不是“foo”和“bar”!该怎么办!

如果您在应用程序中仅使用一种架构,您可以将架构全部放在一起并指定hibernate.default_schema,但是...您正在使用两种。所以就这样了。

Spring EL --eg@Table(name="customer", schema="${myApp.schemaName}")不是一个选项--(甚至有一些傲慢的“没人需要这个”评论),所以如果动态定义模式是荒谬的,那么人们会怎么做?除了,你知道,一开始就没有进入这个荒谬的场景。

java hibernate

8
推荐指数
1
解决办法
4544
查看次数

如何使用 Spring AOP 实现基于注解的安全性?

我是 Spring AOP(以及一般的 AOP)的新手,需要实现以下内容:

@HasPermission(operation=SecurityOperation.ACTIVITY_EDIT, object="#act")
public Activity updateActivity(Activity act)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

@HasPermission 是我自定义的注解,用来标记所有需要预授权的方法。我正在使用基于 Apache Shiro 的自定义安全检查实现。一般来说,我想我需要定义切入点来匹配所有带注释的方法,并提供方面的实现(之前或周围)。

我的问题是重新。方面的实施。

  • 如何从注释中提取操作对象参数?
  • 如何解析对象定义中的 SpEL 表达式并将对象作为“act”参数传递?

java aop spring aspectj spring-el

5
推荐指数
1
解决办法
4913
查看次数

使用Spring Boot和Spring Data JPA的Hibernate拦截器或监听器

我想在保存一个对象的子集合之前运行一些检查(cascade = all).

我正在使用Spring Boot和Spring Data JPA,并且想知道什么方法是最好的:Hibernate监听器或拦截器.每个的优点/缺点是什么?你碰巧有一个你认为最好的方法的例子吗?

我在使用XML配置之前使用过Hibernate监听器,如下所示:

    <property name="eventListeners">
        <map>
            <entry key="post-update">
                <list>
                    <ref bean="myListener" />
                </list>
            </entry>
        </map>
    </property>
Run Code Online (Sandbox Code Playgroud)

在会议工厂(旧项目).但是现在我的大多数配置都在注释中(导致Spring Boot)并且我希望尽可能保持简单和轻便,因此拦截器可能是更好的解决方案.

谢谢.

spring hibernate spring-data spring-data-jpa spring-boot

5
推荐指数
2
解决办法
1万
查看次数

Hibernate @Formula 设置参数

我想知道我们是否可以通过应用程序在@Formula中设置自定义参数。

@Formula(TAX_RATE * price)
private Integer totalPrice;
Run Code Online (Sandbox Code Playgroud)

TAX_RATE 不是数据库中的列,其中“价格”数据库中的列。

如何通过应用程序在查询运行时设置 TAX_RATE 值?

有人建议使用 Hibernate Interceptor 'onPreparedStatement' 方法。还有更好的办法吗?

java hibernate jpa

5
推荐指数
0
解决办法
1691
查看次数

休眠拦截器 - 加载事件后

加载实体后是否有任何事件发生?我的目标是将此实体添加到 Solr 或 Lucene 索引。EmptyInterceptor OnLoad 事件在对象初始化之前发生。我想在设置对象属性后处理事件。是否可以使用 Hibernate Interceptors 或其他东西?

java lucene solr hibernate interceptor

4
推荐指数
1
解决办法
3340
查看次数

空字符串字段作为空字段

默认情况下,Spring将空字符串字段保留为数据库中的空字符串。有没有办法使用Spring Boot将任何实体中所有空字符串字段持久化为空字段?

java hibernate spring-mvc spring-data-jpa spring-boot

2
推荐指数
1
解决办法
2024
查看次数