我现在正在开始一个新项目.我必须选择技术.我需要一些简单的东西,所以没有EJB或Seam.另一方面,我需要JPA(Hibernate或替代)和JSF与IceFaces.
您是否认为在Tomcat上部署的Spring 3上的这样一个堆栈是一个不错的选择?或者Java EE 6 Web应用程序可能更好?我担心Java EE 6是一项新技术,尚未有详细记载.Tomcat似乎比Glassfish 3更容易维护.
你怎么看?你有经验吗?
我有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) 如果我们使用该怎么办
@Column(name="birth_date", nullable=false, length=19)
public Date getBirthDate() {
return this.birthDate;
}
Run Code Online (Sandbox Code Playgroud)
代替
@Temporal(TemporalType.TIMESTAMP)
@Column(name="birth_date", nullable=false, length=19)
public Date getBirthDate() {
return this.birthDate;
}
Run Code Online (Sandbox Code Playgroud)
如果我们使用没有@Temporal注释的日期列属性,是否有任何副作用?
如何配置计划间隔:
@Schedule(persistent=true, minute="*", second="*/5", hour="*")
在应用程序代码之外?
我的表:
产品:id,名称
优惠:id,value,product_id
实体:
@Entity
@Table(name="product")
public class Product implements Serializable {
@OneToMany(mappedBy="product")
private Set<Offer> offers;
...
}
@Entity
@Table(name="offer")
public class Offer implements Serializable {
@ManyToOne
@JoinColumn(name="PRODUCT_ID")
private Product product;
...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试从表中获取一些数据时Product,我得到一个java.lang.NullPointerException,并且这段代码:product.getOffers()返回:
{IndirectSet:未实例化}
如何解决这个问题?
我正在使用JPA进行一些CRUD操作.更新对象是正确的方法吗?
通过更新查询或通过find方法EntityManager?
我有一个Employee我需要更新的对象.哪种方法正确?为了方便,find方法很好,所以我使用了这个find()方法.
请指导我.
我可以(如果是这样,如何?)javax.naming.Context#lookup在EJB模块中查找CDI托管bean ?
我正在使用GlassFish v3.我想我可以使用@Named,但是什么是CDI托管bean的JNDI名称?我想从非托管POJO中查找它们,所以我无法使用@Inject.
我在JPA 2.0 FR规范11.1.37中遇到了这个例子.OneToOne注释,第403页:
@OneToOne(optional=false)
@JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
public CustomerRecord getCustomerRecord() { return customerRecord; }
Run Code Online (Sandbox Code Playgroud)
有什么理由我应该放在@OneToOne(optional=false)同一时间@JoinColumn(... nullable=false)吗?
这两个声明不一样吗?他们中的一个不是多余的吗?
它们都用于DDL模式生成吗?
我想创建一个Spring的bean生成器方法,它知道是谁调用了它,所以我开始使用以下代码:
@Configuration
public class LoggerProvider {
@Bean
@Scope("prototype")
public Logger produceLogger() {
// get known WHAT bean/component invoked this producer
Class<?> clazz = ...
return LoggerFactory.getLogger(clazz);
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这些信息谁想要得到这个bean注入?
我正在寻找一些在Spring世界中相当于CDI的东西InjectionPoint.