小编Kaw*_*awu的帖子

JPA(Hibernate,EclipseLink)映射:为什么这段代码不起作用(使用JPA 2.0,@ EmbeddedId复合PK-FK的2个关系链)?

我有三张桌子:

CREATE TABLE PostAddresses
(
  contact_id INTEGER NOT NULL,
  ordinal_nbr SMALLINT NOT NULL,
  PRIMARY KEY (contact_id, ordinal_nbr)
);

CREATE TABLE Foos
(
  contact_id INTEGER NOT NULL,
  ordinal_nbr SMALLINT NOT NULL,
  PRIMARY KEY (contact_id, ordinal_nbr),
  FOREIGN KEY (contact_id, ordinal_nbr) REFERENCES PostAddresses (contact_id, ordinal_nbr)
);

CREATE TABLE Bars
(
  contact_id INTEGER NOT NULL,
  ordinal_nbr SMALLINT NOT NULL,
  numba INTEGER NOT NULL,
  PRIMARY KEY (contact_id, ordinal_nbr, numba),
  FOREIGN KEY (contact_id, ordinal_nbr) REFERENCES Foos (contact_id, ordinal_nbr)
);
Run Code Online (Sandbox Code Playgroud)

简单的逻辑:Bars - > Foos - > PostAddresses …

java mapping hibernate jpa eclipselink

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

JPA 1.0 @OrderBy 使用字段名与 JPA 2.0 @OrderColumn 使用列名

根据 Java EE 6 文档,JPA 1.0在声明注释时@OrderBy使用字段名称,而 JPA 2.0@OrderColumn使用列名称。看这里:

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderBy.html

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

前者自 JPA 1.0 起可用,后者是随 JPA 2.0 添加的。如果您阅读文档片刻,就会清楚@OrderBy使用字段/属性来指定顺序,而@OrderColumn使用 SQL/DDL 列名。

为什么会变成这样?对我来说,这看起来很不一致。

为什么事情会这样?它是 JPA 1.0 的遗物吗?

jpa sql-order-by jpa-2.0

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

PrimeFaces p:blockUI动态阻塞某个组件(在JSF EL条件下)?

你如何使PrimeFaces p:blockUI动态地阻止某个组件,即EL条件?

使用案例:

手头的条件基本上是用户可以在页面上的模式:如果有任何超出的冲突,并且当前在用户请求中显示它们,则阻止导航树(显示超出冲突模式,阻止导航树),否则我们处于常规视图中,导航树应该被解锁(显示常规碰撞模式,导航树解锁).

当前的问题是,当处于"超出模式"时,当状态更改对话框将状态更改为未超过时,页面会将自身正确呈现/更新回常规模式,但导航树上的阴影仍然存在.由于我们现在处于常规模式,如果没有更多的冲突,我需要一些方法来解锁.

懂了吗?:-)

好的,首先是bean属性:

/*
 * The logic of this method ensures that after status update the
 * mode is automatically put back into regular view if no followup
 * date exceeded collisions exist.
 */
public boolean isFollowupExceededCollisionsShown()
{
    return getFollowupExceededCount() > 0 ? this.followupExceededCollisionsShown : false;
}
Run Code Online (Sandbox Code Playgroud)

第一次尝试:

查看VDL文档http://www.primefaces.org/docs/vdl/3.4/primefaces-p/blockUI.html显示了一些阻止属性.

    <p:blockUI widgetVar="explorerBlocker"
               block=":explorer-form"
               blocked="#{collisionManager.followupExceededCollisionsShown}" />
Run Code Online (Sandbox Code Playgroud)

但上述情况绝对没有.

第二次尝试:

查看展示http://www.primefaces.org/showcase/ui/blockUI.jsf,客户端API似乎更合适.

想法是在状态更改对话框上按OK时根据ValueExpression调用show()或hide():

    <p:dialog id="state-change-dialog"
              widgetVar="stateChangeDialog"
              modal="true"
              appendToBody="true">

        <h:form>

            <ui:include src="/view/collisionmgmt/collisionStatusChangeGrid.xhtml" />

            <h:panelGroup layout="block" styleClass="center-button-panel"> …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jsf el primefaces

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

Hibernate:与两个@ JoinColumn的关系的MappingException以及其中一个列的附加PK只读映射

请注意以下数据库设计:

数据库设计

注意:不要在意这个"设计"的创造者的想法,但我不能改变它.

这是关于MobileTansAuthenticators... 之间的关系

MobileTans表的各自映射:

@Entity
@Table(name="MobileTans")
public class MobileTan implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="ID", insertable=false, updatable=false)
    private Integer id;    // dupe read-only field, ID already in relationship below (writable)

    @Basic(optional=false)
    @Column(name="MOBILE_PHONE_NBR")
    private String mobilePhoneNbr;

    @Basic
    @Column(name="ACTIVATION_CODE")
    private String activationCode;

    @Basic
    @Column(name="ACTIVATION_ERROR")
    private Boolean activationError = Boolean.FALSE;

    @Basic
    @Column(name="STATUS")
    private Integer status;

    @OneToOne(optional=false, fetch=FetchType.EAGER)
    @JoinColumn(name="ID", referencedColumnName="ID")
    @JoinColumn(name="AUTH_NAME", referencedColumnName="AUTHENTICATOR")
    private Authenticator authenticator;

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

这里的线索是列的重复只读映射(insertable=false, updatable=false) …

mapping hibernate jpa

5
推荐指数
0
解决办法
127
查看次数

从Seam 2切换到普通JavaEE 6的最大变化(损失)可能是什么?

问题几乎说明了一切,但显然我正在寻找在Java EE 6环境中可能会错过Seam 2的事情("损失").

对于我的最新(小)项目JavaEE 6或更具体的JSF 2是修复要求,因此使用Seam 2不是一个选项(也不会是).尽管有些人说要让Seam 2使用JSF 2,但我从未做过.到目前为止,我只使用了Seam 2,我担心切换到普通的JavaEE环境会带来比我目前所知更多的问题.

该项目具有以下基本/核心要求:

  • 基于角色和权限的安全概念(约50个用户)
  • JPA 2事务持久性
  • ...

其余的将是基于GUI,搜索表单,客户端验证等,将由RichFaces 4和JavaEE 6 bean验证处理.没有Web服务,没有宁静的URL,没有消息,没有电子邮件.

我可以看到使用Seam安全性肯定是一种损失,但我不确定Seam持久性,实体/查询框架,JBoss EL和其他将是什么,尤其是整体编程模型(导航,EL,bean) .请注意,我们将能够在有意义的时候添加Seam 3模块,因此您可以在"增益"部分的讨论中包含Seam 3.

那么,任何人都能清楚这一点吗?(它不一定是一个完整的总结,无论你想到什么,继续)

PS:我无法连接到Seam论坛所以我觉得我需要在这里问.

seam cdi seam2 seam3 java-ee-6

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

JPA:映射为@ManyToMany @JoinTable的关系的隐式级联?

我有以下映射:

@Entity
@Table(name = "Prequalifications")
public class Prequalification implements Serializable
{
    ...

    @ManyToMany
    @JoinTable(name = "Partnerships", joinColumns = @JoinColumn(name = "prequalification_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "company_id", referencedColumnName = "id"))
    private Set<Company> companies;

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

@ManyToMany+ @JoinTable映射关系中,是不是隐含的关联(链接)实体(这里Partnerships)被自动持久化,删除等等,即使

默认情况下,关系具有空级联集

?以上引用来自"Pro JPA 2,Mike Keith".

执行

em.merge(prequalification);
Run Code Online (Sandbox Code Playgroud)

在上述实体上确实保留了相关的伙伴关系而没有指定任何级联类型.

我是正确,这隐含的级联被执行?在我看的任何地方都没有提到......

java many-to-many jpa cascade eclipselink

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

如何在运行时查询EclipseLink版本(以及JPA元数据)?

问题几乎说明了一切.

org.hibernate.Version.getVersionString()在EclipseLink中是否有等价物?

为什么通常没有便携式(JPA)方式来查询提供者信息?

jpa version eclipselink

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

Python:按顺序检索字典键是否已添加?

在Python中,有没有办法按顺序检索项目被添加的键列表?

String.compareMethods = {'equals': String.equals,
                         'contains': String.contains,
                         'startswith': String.startswith,
                         'endswith': String.endswith}
Run Code Online (Sandbox Code Playgroud)

您在此处看到的按键用于选择(下拉)框,因此顺序很重要.

有没有办法没有保持一个单独的列表(并没有为我正在尝试做的事情过度复杂)?对于我所看到的,由于涉及散列而不可能......

我正在使用Python 2.6.x.

python sorting dictionary key

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

会话结束时销毁视图范围的bean

我的问题与此(或其他)有关:

@PreDestroy从未在@ViewScoped上调用

如此处所述,没有简单的解决方案来解决在导航时销毁视图范围的Bean的问题,并且在会话期满时似乎也是如此。

释放(调用该@PreDestroy方法)JSF视图范围的Bean 的非平凡方法会是什么样子,或者更确切地说,是会话期满后立即释放?

我在GlassFish 3.1.2上使用Java EE 6和Mojarra2.1.x。

jsf glassfish java-ee jsf-2 view-scope

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

多个调用级别的异常处理

如何最好地处理调用层次结构中引发异常的多个级别的方法,以便如果是致命错误,程序将退出(显示错误对话框后)?

我基本上来自 Java。在那里我简单地将任何方法声明为throws Exception,重新抛出它并在顶层的某个地方捕获它。

然而,Python 不同。我的 Python 代码基本上如下所示。

编辑:添加了更简单的代码......

主入口函数( plugin.py):

def main(catalog):

    print "Executing main(catalog)... "
    # instantiate generator
    gen = JpaAnnotatedClassGenerator(options)

    # run generator
    try:
        gen.generate_bar()  # doesn't bubble up
    except ValueError as error:
        Utilities.show_error("Error", error.message, "OK", "", "")
        return

    ... usually do the real work here if no error
Run Code Online (Sandbox Code Playgroud)

JpaAnnotatedClassGenerator班级 (engine.py):

class JpaAnnotatedClassGenerator:

    def generate_bar(self):
        self.generate_value_error()

    def generate_value_error(self):
        raise ValueError("generate_value_error() raised an error!")
Run Code Online (Sandbox Code Playgroud)

我想返回给调用者一个异常,该异常将被抛出回该调用,直到它到达最外层try-except以显示带有异常消息的错误对话框。

问题:如何在 Python 中最好地完成此操作?我真的必须 …

python exception try-except

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