我正在从事java Web项目,必须在表中插入用户记录。
需要在user表中的ID列值中添加前缀,这意味着我们必须将像“user”这样的前缀添加到序列生成的值中,以获得id列的最终值为“user00001”,这是每个新记录的主键插入表中。
我创建了一个序列和DB触发器,用于在DB中插入任何记录以满足上述要求时填充ID列。我正在使用Oracle 11g DB。
在我的Web应用程序中,我必须使用Hibernate来执行与DB相关的任务,如插入、更新
我的Table有以下xml配置
<hibernate-mapping>
<class name="UserProfile" table="USER_PROFILE">
<id name="id" type="string">
<column name="id"/>
<generator class="sequence">
<param name="sequence">USER_PROFILE_SEQ</param>
</generator>
</id>
<property name="firstName" type="string" column="FIRST_NAME"/>
<property name="middleName" type="string" column="MIDDLE_NAME"/>
<property name="lastName" type="string" column="LAST_NAME"/>
</class>
</hibernate-mapping>
并为用户概要文件创建了JavaBean,如下所示
public class UserProfile {
private String id;
private String firstName;
private String middleName;
private String lastName;
public UserProfile() {
super();
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the firstName
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName the firstName to set
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return the middleName
*/
public String getMiddleName() {
return middleName;
}
/**
* @param middleName the middleName to set
*/
public void setMiddleName(String middleName) {
this.middleName = middleName;
}
/**
* @return the lastName
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName the lastName to set
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Hibernate正在使用我在xml映射中分配的序列并获取值,但不是将id列值填充为序列号,而是希望它采用由DB触发器生成的值,该触发器采用序列值并向其添加像“user”这样的前缀在插入表中的记录之前。
所以我的问题是,如何用触发器生成的值填充hibernate中的Id列?由于我不熟悉Hibernate,我下载了最新的Hibernate版本4.2.7发行版。任何帮助都将不胜感激。
注意:我不能根据应用程序团队的要求删除触发器。
这篇文章对你有帮助吗?https://forum.hibernate.org/viewtopic.php?t=973262
在这篇文章中,提供了自定义生成器类,该类允许数据库分配id。
映射如下:
<id name="id" type="string">
<column name="id"/>
<generator class="jpl.hibernate.util.TriggerAssignedIdentityGenerator" />
</id>
问题内容: 我遇到了一个以前不必处理的问题。我正在用Java为数据库编写一个补丁,该补丁基本上是在转换存储在某些行中的数据。为了做到这一点,我有一个转换表,告诉我什么值变成什么。 例如,如果我读了“ RC”,“ AC”,“ GH”之一->将值更新为“ T1”。(这些只是随机的示例,基本上是将一个字符串转换为另一个字符串。) 我需要一种存储这些转换的好方法。我在想一个哈希图:KEY,VALUE:(R
问题内容: 我接下来还有几粒豆: 我正在尝试执行下一个Hibernate查询: 问题: 我了解Hibernate正在寻找类似的东西: 代替: 关于如何在不创建新bean的情况下解决此问题的想法? 谢谢! 问题答案: 我写了一个ResultTransformer可以解决您的问题。它的名称是AliasToBeanNestedResultTransformer,请在github上查看。
问题内容: 我对Java,JavaFX和编程一般还是有点陌生,但是我遇到的问题困扰着我。 在大多数教程中,我查找了有关填充ListView(更具体地说,使用ObservableArrayList)的方法,最简单的方法是从String的ObservableList中创建它,如下所示: 但是我不想使用字符串。我想使用我制作的名为Words的自定义对象: 每个Word对象只有两个属性:wordStr
我对Java、JavaFX和一般编程都有点陌生,我有一个问题让我大吃一惊。 在我查阅的大多数关于填充ListView(更具体地说,使用ObservableArrayList)的教程中,最简单的方法是从字符串的ObservableList创建它,如下所示: 但我不想用字符串。我想使用我制作的一个名为Words的自定义对象: 要明确的是,这不是android的,单词列表最终会被更改、保存和加载,所以我
问题内容: 在Java中,如何创建在构建时填充的最终Set?我想做以下事情: 但是我不知道Java的正确语法。 问题答案: 试试这个成语:
我正在从Ajax JSON创建一个DataTable。 将创建DataTables,但它显示一个错误: DataTables警告:表ID=CHANGETABLE-为行0,列0请求未知参数“0”。有关此错误的详细信息,请参阅http://datatables.net/TN/4 我的JSON看起来如下所示 在我的Java控制器中创建了这样的JSON对象: 我不知道如何将此信息与 属性一起使用,以使其适