小编jmo*_*ira的帖子

扩展JPA实体以添加属性和逻辑

我需要知道是否可以通过扩展它来为某个POJO JPA实体(使用hibernate提供程序)添加一些属性和行为,然后使entityManager返回扩展对象而不仅仅是pojo实体,如下例所示:

POJO JPA实体类

@Entity
@Table("test")
public class Test implements Serializable {
}
Run Code Online (Sandbox Code Playgroud)

扩展类

public class ExtendedTest extends Test {
...
}
Run Code Online (Sandbox Code Playgroud)

获取扩展类的对象

List<ExtendedTest> extendedList = entityManager.createNamedQuery("ExtendedTest.findByFoo").setParameter("foo", "bar").getResultList();
Run Code Online (Sandbox Code Playgroud)

我正在评估的另一种可能方式是使用复合实体扩展功能并委派所有setter和getter,但这可能意味着对大型表的大量工作:

public class ExtendedTest2 {
    private Test test;

    public ExtendedTest2(Test test) {
        this.test = test;
    }

    public getFoo() {
        return test.getFoo();
    }

    public getBar() {
        return test.getBar();
    } 

    ...
}
Run Code Online (Sandbox Code Playgroud)

任何建议将非常感谢.

java hibernate jpa composition

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

在休眠中加入复合主键的某个属性

我正在使用休眠,并且我有两个表(遗留的,它们无法重组),如下所示

表A

@Entity
@Table(name = "tableA")
public Class TableA implements Serializable {
    @EmbeddedId private TableAId tableAId;

    @OneToOne(mappedBy = "tableA")
    private TableB tableB;

    // getters, setters, hashCode and equals ommited
}
Run Code Online (Sandbox Code Playgroud)

表A的复合ID

@Embeddable
public class TableAId implements Serializable {
    protected int id1;
    protected String id2;
    protected int id3;
    // getters, setters, hashCode and equals ommited
}
Run Code Online (Sandbox Code Playgroud)

表B

@Entity
public class TableB implements Serializable {
    @OneToOne
    @JoinColumn(name = "tableB", referencedColumnName = "id3")
    protected TableA tableA;
    // getters, setters, hashCode and equals ommited …
Run Code Online (Sandbox Code Playgroud)

java persistence hibernate jpa composite-key

5
推荐指数
1
解决办法
2517
查看次数

使用 APPLICATION_FORM_URLENCODED 媒体类型与 Jersey 客户端进行 POST

我必须将pojo 发布到仅通过表单数据(MediaType.APPLICATION_FORM_URLENCODED)接受参数的服务器。我知道 jersey 客户端可以将对象转换为 xml、json 和其他类型,但是尝试转换为 APPLICATION_FORM_URLENCODED 会给出一个异常,表明没有指定类型的正文编写器可用。

有没有办法将对象序列化为 application_form_urlencoded MultivaluedMap,或者我必须逐个手动获取属性以形成结果 MultivaluedMap?根据问题上下文,创建一个使用 jersey 序列化的适配器在我看来并不是合适的解决方案。

POST 对象

@XmlRootElement
public class POSTableObject {
    private int a;
    private String b;

    public int getA() { return a; }
    public void setA(int a) { this.a = a; }
    public String getB() { return b; }
    public void setB(String b) { this.b = b; }
}
Run Code Online (Sandbox Code Playgroud)

使用 Jersey 客户端发布操作

ClientResponse response = client.resource(url).type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, postableObject);
Run Code Online (Sandbox Code Playgroud)

java jersey jakarta-ee

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