小编ger*_*rry的帖子

在jpa/EclipseLink创建表后执行sql脚本?

在EclipseLink生成ddl后,是否有可能执行sql脚本?
换句话说,是否可能使用带有"drop-and-create-tables"的EclipseLink属性"eclipselink.ddl-generation",并且EclipseLink在创建后执行另一个sql文件(将一些数据插入到刚创建的某些表中)表定义?

我正在使用带有GlassFish v3的EclipseLink 2.x和JPA 2.0.

或者我可以在项目调用的java方法(与ejb3的战争)部署中初始化表吗?

java orm jpa eclipselink jpa-2.0

13
推荐指数
3
解决办法
2万
查看次数

具有实体继承的@PrePersist

我在继承和@PrePersist注释方面遇到了一些问题.我的源代码如下所示:

_带有注释updateDates()方法的'base'类:

@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Base implements Serializable{

    ...

    @Id
    @GeneratedValue
    protected Long id;
    ...
    @Column(nullable=false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationDate;
    @Column(nullable=false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date lastModificationDate;
    ...
    public Date getCreationDate() {
        return creationDate;
    }
    public void setCreationDate(Date creationDate) {
        this.creationDate = creationDate;
    }
    public Date getLastModificationDate() {
        return lastModificationDate;
    }
    public void setLastModificationDate(Date lastModificationDate) {
        this.lastModificationDate = lastModificationDate;
    }
    ...
    @PrePersist
    protected void updateDates() {
      if (creationDate == null) {
        creationDate = new Date();
      }
      lastModificationDate …
Run Code Online (Sandbox Code Playgroud)

inheritance jpa

7
推荐指数
1
解决办法
1万
查看次数

JPA TABLE_PER_CLASS继承:如何只选择SELECT超类条目?

我正在使用EclipseLink作为JPA提供程序.此外,我正在使用以下TABLE_PER_CLASS继承结构

@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@NamedQueries({
    @NamedQuery(name=Parent.QUERY_FIND_ALL, query="SELECT p FROM Parent p")
})
public class Parent {
        // the class code follows here
}

@javax.persistence.Entity 
@NamedQueries({
    @NamedQuery(name=Child.QUERY_FIND_ALL, query="SELECT c FROM Child c")
})

public class Child extends Parent {
        // the class code follows here
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是我只想接收父类的条目.但是使用命名查询"SELECT p FROM Parent p",也会返回子表中的所有条目.

选择或查找代码如下:

public List findWithNamedQuery(String query) {
        return em.createNamedQuery(query).getResultList();
}
Run Code Online (Sandbox Code Playgroud)

因此查询即"SELECT p FROM Parent p".

我怎样才能真正接收父条目而不是这个inheritacne层次结构的所有条目?

简而言之:如何保持所有子条目不受影响,并仅返回父条目?

编辑1:
我正在使用EclipseLink 2.0.1,但每次我通过类型表达式尝试axtavt的解决方案时,我都会收到以下错误:

"Invalid Type Expression on [my.domain.Parent].  The class does not have …
Run Code Online (Sandbox Code Playgroud)

inheritance jpa table-per-class

6
推荐指数
2
解决办法
8616
查看次数

JAX-RS @PathParam注入类成员变量?

我想做这样的事情:

@Stateless
@Path("/sensors/{sensorid}/version")
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public class SensorVersionRestView extends VersionRestView{

    @PathParam("sensorid")
    private String sensorid;

    @GET
    @Path("count")
     // so the complete path is i.e. 
     // domain.com/rs/sensors/111211/version/count
    public void getCount() {

        // do something with the sensorId....

    }
}
Run Code Online (Sandbox Code Playgroud)

但我唯一得到的是null运行时(我使用带有Jersey的Glassfish v3).编译器和eclipse从未提到@PathParam成员类变量的问题.

我的构造有什么问题?

主要问题是,为什么我不想在这个类中的每个方法上使用整个路径,还有另一个类处理传感器层上的一些休息操作(deomain.com/rs/sensors/count ie)

rest jax-rs jersey

6
推荐指数
2
解决办法
5715
查看次数

使用RequestScope在ManagedBean中使用有状态EJB的问题

我在Glassfish v3应用服务器中使用JSF 2.0和EJB 3.1.我实际上面临着以下问题:
在带有RequestScope的MenagedBean中,我想访问一个会话对象(一个带有@Stateful的EJB),它应该存储一些会话相关信息作为选择的类别,seleced页面(带有一个数据表的paginator for每个类别)等 - 我认为没什么特别的.
第一次选择类别时,将创建并显示数据表.好吧到目前为止.现在,如果单击某个项目(行)以显示项目的详细信息,或者是否应显示下一页面,则会重新创建会话(有状态EJB),并再次使用默认值来显示和呈现页面.

代码如下:

@ManagedBean
@RequestScoped
public class TableViewBean {

    @EJB
    SessionBean session;

    public DataModel getTable() {
            return session.getDataModel();
         }

        public SessionBean getSession(){
            return session;
        }
         public void next() {
             session.getPaginator().nextPage();
             session.resetList();
         }

         public void previous() {
                session.getPaginator().previousPage();
                session.resetList();
         }
         // some other code
    }
Run Code Online (Sandbox Code Playgroud)

和会话EJB:

@Stateful
public class SessionBean {

private String selectedType = "Entity";

private DataModel dataModel;
private int rowsPerPage = 5;
private Paginator paginator;


public void setSelectedType(String type){
    if(!type.equalsIgnoreCase(selectedType)){
        selectedType = …
Run Code Online (Sandbox Code Playgroud)

session jsf-2 ejb-3.1

4
推荐指数
1
解决办法
3118
查看次数

JPA:@ElementCollection和InheritanceType.TABLE_PER_CLASS - >重复的列名

我创建了以下场景:

@javax.persistence.Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class MyEntity implements Serializable{
    @Id
    @GeneratedValue
    protected Long id;
    ...
    @ElementCollection
    @CollectionTable(name="ENTITY_PARAMS")
    @MapKeyColumn (name = "ENTITY_KEY")
    @Column(name = "ENTITY_VALUE")
    protected Map<String, String> parameters;
    ...
}
Run Code Online (Sandbox Code Playgroud)

以及:

@javax.persistence.Entity
public class Sensor extends MyEntity{
    @Id
    @GeneratedValue
    protected Long id;
    ...

    // so here "protected Map<String, String> parameters;" is inherited !!!!
    ...
}
Run Code Online (Sandbox Code Playgroud)

所以运行这个例子,没有创建表,我收到以下消息:

WARNUNG: Got SQLException executing statement "CREATE TABLE ENTITY_PARAMS (Entity_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255), ENTITY_KEY VARCHAR(255), Sensor_ID BIGINT NOT NULL, ENTITY_VALUE VARCHAR(255))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: …
Run Code Online (Sandbox Code Playgroud)

java jpa

2
推荐指数
1
解决办法
4841
查看次数