我有2个班:
@XmlRootElement
public class A {
private Long id;
private B b;
// setters and getters
}
Run Code Online (Sandbox Code Playgroud)
和
@XmlRootElement
public class B {
private Long id;
private String field1;
private String field2;
// setters and getters
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,如果我改变类的实例A到XML,我将所有的字段(id)和引用B类字段(id,field1,field2)是这样的:
<a>
<id>2</id>
<b>
<id>5</id>
<field1>test1</field1>
<field2>test3</field2>
</b>
</a>
Run Code Online (Sandbox Code Playgroud)
是否可以修改引用类中的哪些字段B包含在类的XML中A?例如,我想说当我转换一个A类的实例时,我只想id从B类(no field1和field2fields)中获取,所以我想得到:
<a>
<id>2</id>
<b>
<id>5</id>
</b> …Run Code Online (Sandbox Code Playgroud) 我目前正在学习新的Java EE 6组件模型,并且与最新的依赖注入机制相混淆.所以这是我的问题:
1)@ Inject和@EJB之间有什么区别
2)如果我有一个包含另一个POJO的简单POJO(其中一个是DAO代码),那么更好的选择是什么:@Inject或@EJB?
我可以混用@Inject和@EJB吗?
一个例子是:
ClassA实现了InterfaceA,并具有ClassA_Adaptor的实例
ClassA_Adaptor实现InterfaceAB并具有ClassB的实例
ClassB实现了InterfaceB,并具有ClassB_Adaptor实例和实例DAO_ClassB
ClassB_Adaptor实现了InterfaceB并具有ClassC的实例
ClassC实现了InterfaceBC并具有WebService_ClassC的实例
DAO_ClassB将使用JPA 2.0(@PersistenceContext)
我想要注入所有这些,包括DAO和WebService.
3)仅对某些操作使用事务处理而不是对所有操作都使用事务是否是一种不好的方法?
例如:DAO_ClassB中的某些方法是典型的查询,而其他方法是"写入"方法.不用事务包装"READ"方法是不是很糟糕?
据我所知,DAO_ClassB可以使用@EJB包装事务(注入DAO_ClassB并使所有方法都是事务性的).我该如何控制它?
很抱歉,如果有些问题令人困惑,因为我只知道Java EE 6新组件模型的部分内容.
我正准备使用新的EJB3 TimerService(作为Java EE 6的一部分),和往常一样,我对JavaDoc的简洁性印象深刻:)
你知道对象的persistent属性有什么影响TimerConfig吗?
JavaDoc TimerConfig说:persistent属性确定相应的计时器是否具有跨越创建它的JVM的生命周期.它是可选的,默认为true.
我发现了许多显示Weld代码示例的教程,但没有介绍性的概述.
您能否请一篇介绍性文章,或回答以下问题:
所以我的实体有:
@Column(name="TS", nullable=false)
private java.sql.Timestamp timestamp;
Run Code Online (Sandbox Code Playgroud)
我生成的MetaModel具有:
public static volatile SingularAttribute<MyEntity,Timestamp> timestamp;
Run Code Online (Sandbox Code Playgroud)
我想通过Max Timestamp值选择:
Root<MyEntity> root = query.from(MyEntity.class);
Expression maxExpression = cb.max(root.get(MyEntity_.timestamp));
Run Code Online (Sandbox Code Playgroud)
但我不被允许,因为:
max(Expression<N> x)应用数值max运算创建聚合表达式.<N extends java.lang.Number>表达
当然Timestamp不会延伸Number.
如何使用typesafe Criteria API MAX对Timestamp列进行操作?
我是JPA的新手.所以我的问题对某些人来说应该是如此简单.
下面是SQL中的简单查询,我想将其转换为JPA.我已经有一个实体类叫TimeEnt.
SELECT
SUM(TimeEntryActualHours) as UnBilledHrs,
SUM (TimeEntryAmount) as UnbilledAmount
FROM TimeEnt WHERE MatterID = 200
Run Code Online (Sandbox Code Playgroud) 启动一个新项目,并想了解在WAR与EAR中打包EJB的优缺点.
当EJB在WAR中时,JNDI仍然可以工作吗?效率?等等.?
谢谢.
我是RESTful webservices的新手,并试图@OneToMany从独立的客户端应用程序更新我的关系,但我无法做到这一点.我正在使用Glassfish 3.1.1附带的JAX-RS的Jersey实现.
我有一个与班级A有@OneToMany关系的班级B.
MyRestClient 是我的独立客户端,它调用我在Glassfish 3.1.1上部署的RESTful Web服务.
MyRestClient.java
public class MyRestClient {
public static void main(String[] args) {
Client client = Client.create();
WebResource resource = client.resource("http://localhost:8080/myapp/rest/a/update/123");
B b1 = new B("debris");
ClientResponse response = resource.put(ClientResponse.class, b1);
System.out.println(response.getEntity(A.class).getTitle() + " has " + response.getEntity(A.class).getBList().size() + " Bs.");
}
}
Run Code Online (Sandbox Code Playgroud)
AResource 是一个EJB会话bean,我将其用作RESTful Web服务.
AResource.java
@Stateless
@Path("/a")
public class AResource {
@EJB
private AManager aManager;
@PUT
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path("/update/{id}")
public Response updateA(B b, @PathParam("id") …Run Code Online (Sandbox Code Playgroud) 我有现有的web-app,我想将其转换为web.xml-less servlet 3.0.我已经设法使它工作,但是web.xml中有2个标签,我仍然不知道web.xml-less环境中的等效代码.
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/pageNotFound</location>
</error-page>
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
用CDI做这样的事情是否安全?
@Named
@ApplicationScoped
public class DAO {
@PersistenceContext
private EntityManager entityManager;
}
Run Code Online (Sandbox Code Playgroud)
我知道它EntityManager本身不是线程安全的,因此不应该在共享的全局上下文中使用@ApplicationScoped.但是,由于注入的对象@PersistenceContext实际上是底层的线程感知包装EntityManager,这是否可以使这个好?
我已经看过关于这个主题的其他帖子,但未能找到这个具体案例的权威答案.例如:
Java CDI @PersistenceContext和线程安全
例如,看起来使用它是安全的@Stateless- 但我不确定这是因为工作方式@Stateless,还是因为@PersistenceContext它本身固有的东西.
编辑
我的困惑的来源是@PersistenceContext注入的EntityManager包装器似乎知道当前的线程,以便弄清楚是否已经有一个正在进行的事务.所以也许我将线程感知与线程安全混淆,它们是两个不同的东西.