我在使用JPA注释建模/理解部分,非不相交的继承时遇到问题.
以下是四个表格:
CREATE TABLE Persons (
id INTEGER NOT NULL,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
PRIMARY KEY (id));
CREATE TABLE Referees (
id INTEGER NOT NULL,
license_nbr VARCHAR(10) DEFAULT NULL NULL,
PRIMARY KEY (id),
CONSTRAINT referees_persons_fk
FOREIGN KEY (id)
REFERENCES Persons (id)
ON DELETE CASCADE
ON UPDATE CASCADE);
CREATE TABLE Coaches (
id INTEGER NOT NULL,
license_nbr VARCHAR(10) DEFAULT NULL NULL,
PRIMARY KEY (id),
CONSTRAINT coaches_persons_fk
FOREIGN KEY (id)
REFERENCES Persons (id)
ON …Run Code Online (Sandbox Code Playgroud) 我有一个(请求范围的)列表,用户可以从中选择"PQ"(链接列表).单击或以其他方式输入浏览器时,将显示每个PQ的主页面.每个PQ的页面都是表格
http://localhost:8080/projectname/main.jsf?id=2
这是PQ bean的第一个:
@Named
@ViewScoped
public class PqHome implements Serializable
{
@PersistenceContext(unitName="...")
private EntityManager em;
private Integer id;
private PQ instance;
@PostConstruct
public void init()
{
System.out.println("ID is " + id); // ID from URL param
instance = em.find(PQ.class, id);
}
public Integer getId()
{
return id;
}
public void setId(Integer id)
{
this.id = id;
}
public PQ getInstance()
{
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
这是main.xhtml:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
...>
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{pqHome.id}">
<f:convertNumber integerOnly="#{true}" />
</f:viewParam> …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
$sfKeyword = new Zend_Form_SubForm();
$tfKeyword = $sfKeywords->createElement('text', 'keyword');
$tfKeyword->setLabel('Keyword: ');
$tfKeyword->addValidator('regex', false, array('/[a-zA-Z_][a-zA-Z_0-9]*/'));
Run Code Online (Sandbox Code Playgroud)
此正则表达式验证关键字,并且应该仅允许az,AZ和_作为第一个字符,然后另外允许数字0-9,零次或多次出现.
但是当输入一些中间有空格的字符串时,字符串会传递验证程序,而不会显示错误消息.情况并非如此.
注意,我也试过了
'/[a-zA-Z_][a-zA-Z_0-9]*/s'
Run Code Online (Sandbox Code Playgroud)
但没有区别(正如预期的那样).
正则表达式(或Zend框架)有什么问题?
我有以下简单的设计:
有效的XHTML http://www.kawoolutions.com/media/persons-roles-reduced.png
这基本上是JPA不支持的非不相交继承的解决方法.人可以自己存在,但可以选择单个玩家实体,单个教练实体或两个实体来完成逻辑.
以下是相当容易理解的JPA 2.0映射(注意@Id前向关联):
@Entity
@Table(name = "Persons")
public class Person implements Serializable
{
@Id
@Column(name = "id")
private Integer id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToOne(mappedBy = "person")
private Coach coach = null;
@OneToOne(mappedBy = "person")
private Player player = null;
...
}
@Entity
@Table(name = "Players")
public class Player implements Serializable
{
@Column(name = "registration_nbr")
private String registrationNbr = null;
@Id
@OneToOne
@JoinColumn(name = "id")
private Person …Run Code Online (Sandbox Code Playgroud) 我有一个类似对象的列表,其中一些有一定的值集,这里更具体地说是一个布尔标志:
myList = [WhatEver(..., True, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), WhatEver(..., True, ...), WhatEver(..., False, ...), ...]
Run Code Online (Sandbox Code Playgroud)
在Python中是否有一种无痛的方法来获取其值设置为特定值的项的子列表,这里是True或False?
这基本上是对这个答案的延伸.
我试图在方法/动作调用中获取参数(对于列表/数据表中的删除按钮).
客户:
<ui:include src="...">
<ui:param name="acceptButtonBean" value="#{repoHome}" />
<ui:param name="acceptButtonAction" value="removeIndividualDocument(#{doc.id})" />
</ui:include>
Run Code Online (Sandbox Code Playgroud)
子视图:
<h:commandButton value="Continue"
action="#{acceptButtonBean[acceptButtonAction]}" />
...
</h:commandButton>
Run Code Online (Sandbox Code Playgroud)
但是,JSF失败了,例外情况说:
...yadda, yadda
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) Caused by: javax.el.MethodNotFoundException: /subviews/remove-doc-clink-popup.xhtml @37,98 action="#{acceptButtonBean[acceptButtonMethod]}": Method not found: com.company.project.beans.RepoHome@34b183e7.removeExternalDocument(89)()
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:109)
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) ... 31 more
Run Code Online (Sandbox Code Playgroud)
请注意
....RepoHome@34b183e7.removeExternalDocument(89)()
Run Code Online (Sandbox Code Playgroud)
它不能那样工作.JSF似乎附加括号无所谓.
它可以以不同的方式实现,但仍然采用上述技术吗?如果是这样,怎么样?
如果没有,为什么不工作?是否指定了?这是Mojarra 2.0.x的错误吗?如果有其他括号,我认为省略括号没有问题...
注意我不是在寻找替代解决方案,比如使用f:param,f:attribute或f:setPropertyActionListener.
提前致谢
我有一个豆:
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
...
@Named
@ViewScoped
public class SimpleBean implements Serializable
{
private static final long serialVersionUID = 1L;
@Inject
protected FacesContext facesContext;
...
}
Run Code Online (Sandbox Code Playgroud)
根据
https://arjan-tijms.omnifaces.org/p/jsf-23.html#1316
这应该与2.3一起工作...
部署到Wildfly 14时,结果是:
13:02:33,516 INFO [org.hibernate.dialect.Dialect] (ServerService Thread Pool -- 72) HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
13:02:33,563 INFO [org.hibernate.envers.boot.internal.EnversServiceImpl] (ServerService Thread Pool -- 72) Envers integration enabled? : true
13:02:34,344 INFO [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (ServerService Thread Pool -- 72) HHH000397: Using ASTQueryTranslatorFactory
13:02:34,531 WARN [org.jboss.weld.Bootstrap] (MSC service thread 1-1) WELD-000146: BeforeBeanDiscovery.addAnnotatedType(AnnotatedType<?>) used for class …Run Code Online (Sandbox Code Playgroud) 在过去的几个月/周内,我在Hibernate和JPA映射方面做了很多工作.我的数据库使用复合主键,我已经报告了大约10到15个Hibernate和5-10个EclipseLink错误.在某些应该起作用的星座中,Hibernate尤其荒谬.(我有专家和JPA书籍作者检查过的代码)
最大的问题是:
当ORM没有得到所有 JPA映射时,有什么用?
Hibernate提供了太多东西,缓存etcetc.我想知道谁在乎开发人员甚至无法创建一个有效的元数据模型......这一切都毫无意义.那么,当它没有使所有 JPA映射正确时,ORM有什么用?
我正在寻找在类(非静态)中声明的实例变量的替代OO/Java术语,或者更具体地说,在使用JPA注释"装饰"的Java类中:
@Entity
@Table(name = "Departments")
@IdClass(value = DepartmentId.class)
public class Department implements Serializable
{
@Id
@Column(name = "company_id", insertable = false, updatable = false)
private Integer companyId;
@Id
@Column(name = "internal_code")
private String internalCode;
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "company_id", referencedColumnName = "id")
private Company company;
...
}
Run Code Online (Sandbox Code Playgroud)
他们被称为财产吗?属性?会员?场?只是参考?除了实例变量之外什么都没有?
如果有的话,我想听一个单词的用语."实例变量"对于我目前正在做的事情来说太长了.
我在两个其他表之间使用Hibernate 4和一个简单的"连接表".以下是JPA 1.0兼容实体:
@Entity
@Table(name = "Companies")
public class Company
{
@Id
@Column
private Integer id;
@Column
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity
@Table(name = "PQs")
public class PQ implements Serializable
{
@Id
@Column
private Integer id;
@Column
private String name;
...
}
Run Code Online (Sandbox Code Playgroud)
正如您可以看到两个类似的表,只是一个简单的ID加名称.现在互连实体:
@Entity
@Table(name = "Partnerships")
@IdClass(value = PartnershipId.class)
public class Partnership implements Serializable
{
@Id
@Column(name = "pq_id", insertable = false, updatable = false)
private Integer pqId;
@Id
@Column(name = "company_id", insertable = false, updatable = …Run Code Online (Sandbox Code Playgroud) jpa ×5
hibernate ×4
java ×4
mapping ×3
cdi ×2
javabeans ×2
jsf-2 ×2
boolean ×1
eclipselink ×1
el ×1
facelets ×1
faces-config ×1
facescontext ×1
inheritance ×1
jsf-2.3 ×1
list ×1
one-to-one ×1
orm ×1
python ×1
readonly ×1
regex ×1
scopes ×1
sublist ×1
terminology ×1
validation ×1
wildfly ×1
zend-form ×1