- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请考虑以下 mySQL 表:
CREATE TABLE storeman.user (
id INT NOT NULL AUTO_INCREMENT,
email VARCHAR(50) NOT NULL,
display_name VARCHAR(50),
password CHAR(32),
...
PRIMARY KEY (id),
UNIQUE INDEX (email)
);
CREATE TABLE storeman.user_preferences (
id INT NOT NULL AUTO_INCREMENT,
notify_login BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (id),
CONSTRAINT fk_user_preferences FOREIGN KEY (id) REFERENCES user (id) ON DELETE CASCADE
);
如您所见,这两个表之间存在一对一的关系。运行 Hibernate 代码生成器时,我得到以下信息(仅相关部分)
@Entity
@Table(name = "user", catalog = "storeman", uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class User implements java.io.Serializable {
...
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
public UserPreferences getUserPreferences(){
return this.userPreferences;
};
...
}
问题是当我保存 User 实体时,链接的 UserPreferences 不会自动保存。解决这个问题很容易:
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user")
@Cascade({CascadeType.ALL})
public UserPreferences getUserPreferences(){
return this.userPreferences;
};
但是,如果出于任何原因我必须再次重新运行 Hibernate 代码生成器,@Cascade({CascadeType.ALL})
将会消失,这很危险,因为我依靠链接表自动保存在我的代码中这一事实。所以问题是:有没有办法修改上面的 mySQL 脚本,以便在运行 hibernate 逆向工程代码生成时,自动添加 @Cascade 注释?
最佳答案
除了外键外,mySql 物理表没有说明任何关于级联的信息。只有它可以添加 ON DELETE CASCADE ON DELETE UPDATE。
然后你运行Hibernate Code Generator,CascadeType和@Cascade定义没有被翻译成DDL
尽量使用jpa注解。
@OneToOne(fetch = FetchType.LAZY, mappedBy = "user",cascade= CascadeType.ALL)
public UserPreferences getUserPreferences(){
return this.userPreferences;
};
关于java - Hibernate 代码生成和@Cascade({CascadeType.ALL}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28624615/
我有一个简单的 hibernate OneToOne 程序。它包含一个 导师类(class)和讲师详情 类(class)。 OneToOne 映射定义为从 Instructor 到 Instructo
我搜索了答案,但无法正确找到答案。当我们设置FetchType.EAGER时,CascadeType.ALL、cascade = CascadeType.REMOVE、orphanRemoval有什么
当我尝试运行以下代码时,出现 org.hibernate.TransientObjectException: object references an unsaved transient instan
使用 JPA 我有一个关于 CascadeTypes 的问题。 例如: @ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST,
我正在尝试通过我的 REST-api 向数据库添加一个新的员工实体。 Employee-entity 包含一个 City 属性。这是一个 ManyToOne 关系。当我插入一个新的(不存在的)城市的新
我有两个域类。下面是类的粗略草图。 Company.java public class Company{ @OneToMany(orphanRemoval="true",cascade=Cas
我有两个类: Employee.java @Entity @Table public class Employee { @Id @GeneratedValue private
@OneToMany 注释中插入的 CascadeType 选项与 @Cascade 中插入的 CascadeType 选项有什么区别?哪一个优先,两者之一被忽略吗? @OneToMany(m
我有两个类,彼此之间具有单向一对多关系。 public class Offer{ ... @OneToMany(cascade=CascadeType.ALL) @JoinTa
我有一个相当简单的设置,其中有一个 UserEntity 和一个相应的 UserStatisticEntity。我希望这是一个单向关系,其中 UserEntity 持有引用。 UserStatisti
考虑这个用例。 class Category { @OneToMany(cascade=CascadeType.ALL) List applications = new ArrayList
我有以下代码(当然是经过简化的): @Entity public class Foo { @Generated private Long id; @OneToMany(mappe
我有一个 Entity,其双向 ManyToMany 关系(在同一实体上)标记为 CascadeType.ALL。 以下是查找 Contact 实体的方式: @ManyToMany(cascade=
我现在有点困惑。我有三个表:specialPrice、partner、product。 在specialPrice中,我可以存储可供所选合作伙伴使用的产品的折扣。所以它只有三列。合作伙伴和产品表及其行
我有 OneToMany 双向关系实体类(WorkOrder 和 Task)。 WorkOrder 有一个或多个Task。当我通过query 删除WorkOrder 实体时,出现外键约束异常。 Ent
我现在想知道 Hibernate 中的 CascadeType 和 FetchType 有什么区别? 它们看起来很相似,但我猜它们不能互换,对吧?什么时候使用它们?它们可以同时使用吗? 最佳答案 这是
对于 JPA,我在实体类中定义 Cascade Type 和 orphanRemoval 设置等内容时遇到问题。对我来说,在实体上定义 Cascade Type 和 orphanRemoval 是有限
我认为我在某个地方犯了错误: 有 2 个实体(删除所有无用字段): 1。玩家(许多玩家 -> 在 1 队中) @Component @Entity @Table(name = "player") pu
在多线程环境中, 这有效 Box box = new Box("B"); Toy t1 = box.addNewToy("t1"); Toy t2 = box.addNewToy("t2"); syn
CascadeType.REFRESH 实际上做了什么? 它的定义是 When we refresh an entity all the entities held in this field ref
我是一名优秀的程序员,十分优秀!