小编bow*_*sie的帖子

Hibernate/JPA注释中的多列连接

我有两个实体,我想通过多个列加入.这些列@Embeddable由两个实体共享的对象共享.在下面的示例中,Foo只能有一个BarBar可以有多个Foos(其中AnEmbeddableObject是唯一的键Bar).这是一个例子:

@Entity
@Table(name = "foo")
public class Foo {
    @Id
    @Column(name = "id")
    @GeneratedValue(generator = "seqGen")
    @SequenceGenerator(name = "seqGen", sequenceName = "FOO_ID_SEQ", allocationSize = 1)
    private Long id;
    @Embedded
    private AnEmbeddableObject anEmbeddableObject;
    @ManyToOne(targetEntity = Bar.class, fetch = FetchType.LAZY)
    @JoinColumns( {
        @JoinColumn(name = "column_1", referencedColumnName = "column_1"),
        @JoinColumn(name = "column_2", referencedColumnName = "column_2"),
        @JoinColumn(name = "column_3", referencedColumnName = "column_3"),
        @JoinColumn(name = "column_4", referencedColumnName = "column_4")
    })
    private …
Run Code Online (Sandbox Code Playgroud)

java annotations hibernate jpa

24
推荐指数
3
解决办法
9万
查看次数

用Java模拟URL

我们在我们想要模拟的一个Java类中有一个URL对象,但它是最后一个类,所以我们不能.我们不希望达到上述水平,并模拟InputStream,因为这仍然会给我们带来未经测试的代码(我们有严格的测试覆盖标准).

我已经尝试过jMockIt的反射功能,但是我们在Mac上工作,并且Java代理处理程序存在一些我无法解决的问题.

那么在junit测试中是否有任何不涉及使用真实URL的解决方案?

java url mocking

21
推荐指数
6
解决办法
3万
查看次数

从Generic T派生类

我有一个参数化的hibernate dao执行基本的crud操作,并且当参数化被用作委托来完成给定dao的基本crud操作时.

public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
Run Code Online (Sandbox Code Playgroud)

我希望能够在运行时从T派生Class以在Hibernate中创建条件查询,这样:

public T findByPrimaryKey(ID id) {
    return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
Run Code Online (Sandbox Code Playgroud)

我知道:

T.getClass()
Run Code Online (Sandbox Code Playgroud)

不存在,但有没有办法在运行时从T派生正确的Class对象?

我看过泛型和反思,但没有找到合适的解决方案,也许我错过了一些东西.

谢谢.

java generics reflection derived-class

11
推荐指数
2
解决办法
8491
查看次数

Java验证框架

我曾经遇到过java的验证框架,你在其中编写了一个保护数据类型完整性的方法,并且该数据类型上的任何CRUD操作都自动调用了这个方法.

有谁知道这个框架是什么?我只是想避免对附加到数据类型的每个CRUD方法进行重复验证.

java validation frameworks

9
推荐指数
3
解决办法
5万
查看次数

通过在Hibernate中映射表值进行排序

我有一个@ManyToMany映射,其中表通过映射表自引用,我们想要在实际映射表中对订单ID进行排序,但发现很难配置它.

我们可以在hibernate xml中执行它,所以很自然地假设JPA注释中有支持.有人知道我们如何对映射表中的值进行排序吗?

该表是:

wap_site_components

intid
strname
intcomponentdef
dtmcreated      
intcustomer 
Run Code Online (Sandbox Code Playgroud)

以及自引用的映射表是:

wap_site_component_relations

intid     
intparent (references intid in wap_site_components)
intchild  (references intid in wap_site_components)
intorder (this is the value we want to order the collection on)
Run Code Online (Sandbox Code Playgroud)

在Hibernate Annotations中我们有:

@ManyToMany (fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable (name = "wap_site_component_relations", 
    joinColumns = {@JoinColumn (name = "intparent", referencedColumnName = "id") }, 
    inverseJoinColumns = {@JoinColumn (name = "intchild", referencedColumnName = "id") })
public Set<WapComponent> getChildren() {
    return children;
}
Run Code Online (Sandbox Code Playgroud)

这是我们在hibernate xml中执行它的方式:

        <set
          name="children"
          table="wap_site_component_relations" …
Run Code Online (Sandbox Code Playgroud)

java many-to-many hibernate jpa sql-order-by

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

JAXB + Enums +显示多个值

我有一个枚举:

@XmlEnum
@XmlRootElement
public enum Product {
    POKER("favourite-product-poker"),
    SPORTSBOOK("favourite-product-casino"),
    CASINO("favourite-product-sportsbook"),
    SKILL_GAMES("favourite-product-skill-games");

    private static final String COULD_NOT_FIND_PRODUCT = "Could not find product: ";

    private String key;

    private Product(final String key) {
        this.key = key;
    }

    /**
     * @return the key
     */
    public String getKey() {
        return key;
    }
Run Code Online (Sandbox Code Playgroud)

我在这样的REST服务中输出:

GenericEntity<List<Product>> genericEntity = new GenericEntity<List<Product>>(products) {
};
return Response.ok().entity(genericEntity).build();
Run Code Online (Sandbox Code Playgroud)

它输出如下:

<products>
<product>POKER</product>
<product>SPORTSBOOK</product>
<product>CASINO</product>
<product>SKILL_GAMES</product>
</products>
Run Code Online (Sandbox Code Playgroud)

我希望它输出枚举名称(即POKER)和密钥(即"最喜欢的产品 - 扑克").

我尝试了很多不同的方法,包括使用@XmlElement,@ XMLEnumValue和@XmlJavaTypeAdapter,而不是同时使用它们.

有没有人知道如何实现这一点,就像普通的JAXB注释bean一样?

谢谢.

java enums jaxb

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

Hibernate延迟加载代理与其他框架不兼容

我遇到过几个实例,在这些实例中,POJO采用代理的hibernate bean进行一些工作.

例如,如果我xml为框架X注释bean并将其传递给框架X,则它无法识别该bean,因为它传递了代理对象 - 它没有框架X的注释.

这有一个共同的解决方案吗?我不希望将bean定义为急切加载,或者在应用程序的任何位置转换延迟加载.

java orm hibernate lazy-loading

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