【问题标题】:Logical Delete from an EJB database从 EJB 数据库中逻辑删除
【发布时间】:2011-01-17 12:12:21
【问题描述】:

我有一个数据库,这个数据库中的表是相互关联的。 我正在使用 seam 和 EJB 来处理数据库中这些表中的数据。 我的后端数据库是 postgres。

现在我想做的是我想从一个表中删除数据,但我收到一个 postgres sql 错误,告诉我我违反了规则。 我明白我可以从逻辑上删除这个数据库
- 我必须删除数据库并设置标志的情况。

但我不知道该怎么做。我知道这很简单,但请原谅我。我不知道。任何帮助将不胜感激。下面是我正在使用的代码。感谢您的帮助。

public void delete() throws java.sql.SQLException {
  System.out.println("I got here FIRST");   
  user =em.find(Subscriber.class, subscriber.getId()); //ADDED LATER
  users.remove(subscriber.getId());
  em.remove(subscriber);
  userList(); 
 }

【问题讨论】:

  • 请显示您遇到的异常,并请告知我们您正在使用哪种持久性管理器(Hibernate、TopLink 等)
  • 你违反了什么样的规则?

标签: postgresql seam ejb


【解决方案1】:

乍一看,您是否想删除您正在查询的用户?

因此,将 em.remove(subscriber); 更改为 em.remove(user); //您从 find 方法加载

更新

不知道你想检查哪种flag,让我演示一下如何做到这一点:

假设 User 有一个名为 disabled 的布尔字段,并且您只想删除禁用的用户。

if(user.isDisabled()) 
   em.remove(user);

因此,您仅在 flag 为真时删除用户。

【讨论】:

  • 感谢您的回复 Shervin,您是正确的。此代码有效。 users=subscribers 和 user=subscriber 但我想要这样一种情况,当我执行 em.remove(user) 时,它只会在逻辑上将其删除,并将标志设置为 true 或 false,如果它为 false,它将被删除但不会导致我违反任何 postgres 规则。任何帮助。比kyou
  • 谢谢谢文。虽然我没有对此进行测试,但我仍然会对其进行测试。但我想问一下这是否可能。请记住,我的用户本身就是一个完整的实体。既然它是一个 ejb 实体,我怎么能把它变成一个标志呢?如果我只是这样做,它是否可能会起作用,或者我是否需要将其转换为布尔值?感谢您的答复。看来我快到了。
  • @sammy:您需要相应地修改您的代码。如果你能告诉我这个flag 正在使用什么,那么我可以帮助你。此外,如果您遇到添加新方法会给您的实体 bean 带来问题,您可以在方法顶部添加注释 @Transient。这将告诉您的持久性提供程序跳过此方法。
猜你喜欢
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多