小编jim*_*rds的帖子

使用Java泛型进行JPA findAll()查询和WHERE子句

因此,经过10年多的休整,我将回到Java并尝试使用JPA和Java泛型.我已经创建了一个基于泛型的findAll(other)JPA查询

SELECT * FROM source WHERE other_id = other.id;
Run Code Online (Sandbox Code Playgroud)

这是我要去的地方.它有效,但我想知道是否有更好,更清洁的方法来做到这一点.使用ManagedType很难,并没有太多完整的文档或简单的例子.

我决定尽可能保持我的代码通用(没有双关语),所以我使用JPA2.

这是所有实体类的根.我可能不需要它,但它阻止我有基本的错误.

import java.io.Serializable;

public abstract class DomainObject implements Serializable {

    private static final long serialVersionUID = 1L;

    public abstract void setId(Long id);
    public abstract Long getId();

}
Run Code Online (Sandbox Code Playgroud)

这是抽象的DAO类.我为实现类扩展了这个,因为我需要更具体地做其他活动 - 主要是确保加载延迟集.

public abstract class GenericDAOImpl<T extends DomainObject, T2 extends DomainObject> implements GenericDAO<T, T2> {

private Class<T> type;

@PersistenceContext
protected EntityManager entityManager;

public GenericDAOImpl(Class<T> type) {
    super();
    this.type = type;
}

... save and delete classes go …
Run Code Online (Sandbox Code Playgroud)

java generics jpa criteria-api

16
推荐指数
3
解决办法
8万
查看次数

在IDREF属性中找到JAXB获取对象"",但此对象没有ID

以下是使用SCORM for imsmanifest,xml文件的测试用例.这个XML已经使用了大约5年或更长时间,并且作为标准我不想改变它,除非需要让它工作.

你可以在这里找到xsd文件

错误发生在<organizations default="CYBER4.ORG">和之间<organization identifier="CYBER4.ORG">

在我的项目中,这是pom.xml我的jaxb版本的条目

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

生成我运行的Java代码(这是xjcUbuntu 14.04 的安装)

$ xjc -version
xjc 2.2.4-2
$ xjc -verbose -p org.cyber4.scorm2004.xml.manifest.imscp imscp_v1p2.xsd
Run Code Online (Sandbox Code Playgroud)

输出生成(除其他外)

public class OrganizationsType {

    @XmlAttribute(name = "default")
    @XmlIDREF
    @XmlSchemaType(name = "IDREF")
    protected Object _default;

}
Run Code Online (Sandbox Code Playgroud)

public class OrganizationType {

    @XmlAttribute(name = "identifier", required = true)
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlID
    @XmlSchemaType(name = "ID")
    protected String identifier;

}
Run Code Online (Sandbox Code Playgroud)

这是测试代码

package org.cyber4.scorm2004.build;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

import …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb2 scorm2004

3
推荐指数
1
解决办法
3332
查看次数

标签 统计

java ×2

criteria-api ×1

generics ×1

jaxb2 ×1

jpa ×1

scorm2004 ×1

xml ×1