Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用EJB3在数据库中为一个或多个表设置状态_Java_Ejb 3.0 - Fatal编程技术网

Java 使用EJB3在数据库中为一个或多个表设置状态

Java 使用EJB3在数据库中为一个或多个表设置状态,java,ejb-3.0,Java,Ejb 3.0,何乐而不为, 我们假设我们有很多实体A,B,C,D 当我调用EJBbean来保存新实体或更新实体时,我希望找到一个模式来验证另一个托管bean线程是否保存了一个新实体a、B、C或D,或者有一个更新模式来验证我在事务中是否修改了一个表 因为当我想保存新的实体A时,它有一个多字段整数依赖于haw匹配,特定的实体B和c,d保存在DB中 @Stateless public class EntityABean implements EntityARemote, EntityALocal { @Resou

何乐而不为, 我们假设我们有很多实体A,B,C,D 当我调用EJBbean来保存新实体或更新实体时,我希望找到一个模式来验证另一个托管bean线程是否保存了一个新实体a、B、C或D,或者有一个更新模式来验证我在事务中是否修改了一个表 因为当我想保存新的实体A时,它有一个多字段整数依赖于haw匹配,特定的实体B和c,d保存在DB中

@Stateless
public class EntityABean implements EntityARemote, EntityALocal {

@Resource
 private SessionContext context;

@EJB
private DaoEntity daoEntityEjb;

public void doSomthing(Object param1, Object param2 ...) {
try {
 //dosomthing
}
catch(Excepyion ex) {
context.rollback();
throw ex;
}
}

您的问题不是很清楚,但从我可以看出,您可能需要JPA的自动乐观并发控制机制。 您需要按照说明注释您的版本列,其余部分由底层JPA兼容提供商负责。 有关更多详细信息,请查看另一个SO答案

通过指定锁定模式,可以进一步控制JPA管理版本化实体锁定的方式。您可以通过EntityManager类的lock()方法执行此操作。以下是方法签名:

public void lock(Object entity, LockModeType lockMode);

更多解释请看

我知道,我的问题我喜欢另一个发现模式,因为我调用它是因为如果在我的事务期间没有其他线程更新或保存新实体,我可以获得信息。另一个解决方案是:所有metode调用一个metode syncro,因为我可以保证所有实体未被修改或是新实体在我在metode中时被保存解决方案在EJB3.1中,当我可以使用session@singleton时,我如何保证此bean中所有方法的访问都是syncro