我有一个使用JPA(transaction-type ="JTA")的java EE项目,hibernate作为提供者.我写我的bean来处理CRUD的事情.该程序在JBOSS 7 AS中运行.
我有一个EntityManagerDAO:
@Stateful
public class EntityManagerDao implements Serializable {
@PersistenceContext(unitName = "dtdJpa")
private EntityManager entityManager;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Object updateObject(Object object) {
object = entityManager.merge(object);
return object;
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void createObject(Object object) {
entityManager.persist(object);
}
public void refresh(Object object) {
entityManager.refresh(object);
}
public <T> T find(Class<T> clazz, Long id) {
return entityManager.find(clazz, id);
}
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void deleteObject(Object object) {
entityManager.remove(object);
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我调用时deleteObject,会出现这个异常.
java.lang.IllegalArgumentException:删除分离的实例com.test.User#5
这是怎么造成的,我该如何解决?
我收到一个要求,我需要 a 的默认值@PathParameter。
这就是我的代码的样子:
@GET
@Path("/family/{member}")
public Response responseMsg( @DefaultValue("Father") @PathParam("member") String pathParameter) {}
Run Code Online (Sandbox Code Playgroud)
编译器不会显示任何错误,应用程序当然也不会按照我的预期运行。
因为 uri "/family/ null" 不会匹配路径 " /family/{member}" 而是 " /family/"
我可以知道是否有任何方法可以为 a 指定默认值@PathParam以及如何指定?我还想知道是否 @DefaultValue只兼容 @QueryParameter?