- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个小网络应用程序。在此应用程序中,我可以注册新用户。一个用户有一个角色,一个角色可以有多个用户。
用户表
角色表
如果我进行插入,我希望列 rol_id 为“1”(rol:用户)。在我使用 DBMS 时一切正常,但在我使用 Spring 时则不然,因为我收到以下错误
2018-05-01 11:00:43.432 ERROR 9448 --- [nio-8080-exec-7] o.h.engine.jdbc.spi.SqlExceptionHelper : Column 'rol_id' cannot be null
我的代码是这样的:
角色表
@Entity
@Table(name="roles")
public class Rol implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id_rol", updatable = false, nullable = false)
private Long id;
@Column(name="rol")
@NotEmpty
private String rolType;
@OneToMany(mappedBy= "rol")
private List<User> users = new ArrayList<>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRol() {
return rolType;
}
public void setRol(String rol) {
this.rolType = rol;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
用户表
@Entity
@Table(name="users")
public class User implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id_user", updatable = false, nullable = false)
private Long id;
@Column(name="name")
@NotEmpty
@Length(min= 3, max= 25)
private String name;
@Column(name="surname")
@NotEmpty
@Length(min= 2, max=30)
private String surname;
@Column(name="email")
@NotEmpty
@Email
@Length(min=5, max=30)
private String email;
@Column(name="birthdate", nullable = true)
private String birthdate;
@Column(name="created_at")
@Temporal(TemporalType.DATE)
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date createdAt = new Date();
@Column(name="gender")
@NotEmpty
@Length(min=4, max=6)
private String gender;
@Column(name="username")
@NotEmpty
@Length(min=3, max=20)
private String username;
@Column(name="pass")
@NotEmpty
@Length(min=8, max=30)
private String password;
@ManyToOne
@JoinColumn(name="rol_id")
private Rol rol;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getBirthdate() {
return birthdate;
}
public void setBirthdate(String birthdate) {
this.birthdate = birthdate;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/* MODOFIQUE ESTO ACA, NO SE SI ESTA BIEN */
public String getRol() {
return rol.getRol();
}
public void setRol(Rol rol) {
this.rol = rol;
}
}
DAO 类
public interface IUserDAO extends CrudRepository<User, Long>{
}
用户服务接口(interface)
public interface IUserService {
public List<User> findAll();
public void save(User user);
public User findOne(Long id);
}
实现 UserService 的类
@Service
public class UserServiceImpl implements IUserService{
@Autowired
IUserDAO userDAO;
@Override
@Transactional(readOnly = true)
public List<User> findAll() {
return userDAO.findAll();
}
@Override
@Transactional
public void save(User user) {
userDAO.save(user);
}
@Override
@Transactional(readOnly = true)
public User findOne(Long id) {
return userDAO.findOne(id);
}
}
这是我的 Controller
@Controller
@SessionAttributes("user")
public class UserController {
Constants c = new Constants();
@Autowired
IUserService userService;
@RequestMapping(value= "user/add", method = RequestMethod.GET)
public String addUser(Model model) {
User user = new User();
model.addAttribute("user", user);
model.addAttribute(c.TITLE, "Add User");
model.addAttribute(c.ADD_USER);
return "user-add";
}
@RequestMapping(value= "user/add", method = RequestMethod.POST)
public String addUser(@Valid User user, BindingResult result, Model model, RedirectAttributes ra, SessionStatus status) {
if(result.hasErrors()) {
return "redirect:/user/add";
}
try {
userService.save(user);
status.setComplete();
} catch(Exception e) {
return "redirect:/user/list";
}
return "user-add";
}
@RequestMapping(value= "user/list", method = RequestMethod.GET)
public String listUsers(Model model) {
model.addAttribute("users", userService.findAll());
model.addAttribute(c.TITLE, "Users List");
model.addAttribute(c.LIST_USER);
return "user-list";
}
}
以及我对百里香叶的看法
<form th:action="@{/user/add}" method="POST" th:object="${user}" style="width: 70%;">
<div class="form-group">
<label for="inputName" class="text-uppercase font-weight-bold">Name</label>
<input type="text" class="form-control" id="inputName" th:field="*{name}" autocomplete="off">
</div>
<div class="form-group">
<label for="inputSurname" class="text-uppercase font-weight-bold">Surname</label>
<input type="text" class="form-control" id="inputSurname" th:field="*{surname}" autocomplete="off">
</div>
<div class="form-group">
<label for="inputEmail" class="text-uppercase font-weight-bold">Email</label>
<input type="email" class="form-control" id="inputEmail" th:field="*{email}" autocomplete="off">
</div>
<div class="form-group">
<label for="inputBirthdate" class="text-uppercase font-weight-bold">Birthdate</label>
<input type="date" class="form-control" id="inputBirthdate" th:field="*{birthdate}" autocomplete="off">
</div>
<div class="form-group mb-5">
<label for="inputGender" class="text-uppercase font-weight-bold">Gender</label>
<select type="date" class="form-control" id="inputGender" th:field="*{gender}">
<option th:value="other">Other</option>
<option th:value="male">Male</option>
<option th:value="female">Female</option>
</select>
</div>
<div class="form-group">
<label for="inputUsername" class="text-uppercase font-weight-bold">Username</label>
<input type="text" class="form-control" id="inputUsername" th:field="*{username}" autocomplete="off">
</div>
<div class="form-group">
<label for="inputPassword" class="text-uppercase font-weight-bold">Password</label>
<input type="password" class="form-control" id="inputPassword" th:field="*{password}" autocomplete="off">
</div>
<button type="submit" class="btn btn-primary w-100">
Add User
</button>
</form>
我想要的就是在插入时将 rol_id 设置为 1。由于某种原因仅适用于 DBMS,但不适用于 Spring。
提前致谢。
最佳答案
我想我没听懂。您打算如何在不将 user.rol
设置为非空值的情况下填充 rol_id
?这就是 JPA,您不直接处理连接列和表,而是在对象之间建立关联。
如果您希望新创建的用户默认分配id=1
的角色,您应该相应地修改您的服务:
@Override
@Transactional
public void save(User user) {
user.setRol(roleDao.getOne(1l));
userDAO.save(user);
}
关于java - 列 'column' 不能为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118477/
这正确地呈现了标题,因为我可以看到一个列带有“Product ID”标题的表:。我正试图重构它,这样我就可以重用它,因为它们在整个应用程序中几乎是相同的:。在这种情况下,头不会呈现...检查页面元素中
我什至不知道如何表达这一点,但在 Python 中有没有一种方法可以引用等号之前的文本,而无需实际再次编写? ** 编辑 - 我在 Jupyter 中使用 python3 我似乎用了半辈子的时间来写作
假设我有一个包含以下列的字典 dict_ = [ {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', '
假设我有一个包含以下列的字典 dict_ = [ {'key1': 'value1', 'key2': 'value2', 'key3': 'value3', '
假设我的数据库中有一张地铁 map ,其中每条线路的每个站点都是一行。如果我想知道我的线路在哪里互连: mysql> SELECT LineA.stop_id FROM LineA, LineB WH
代码 select c1,c2,c3,c4,c5,c6 from table where c5 in ('a', 'b') 从这里开始,我想将 c5 列拆分为两列,然后根据它们对 c
我正在尝试搜索表格中的两列,即标题和描述。但我想先搜索标题,然后再搜索描述。所以匹配标题的所有行排在第一位,所有匹配描述的行排在第二位 我可以使用单个 SQL 查询来实现吗? 最佳答案 您还可以使用
下面有以下 Python 数据框。 “标志”字段是我想要用代码创建的所需列。 我想要执行以下操作: 如果“分配类型”是预测的并且“Activities_Counter”大于 10,我想创建一个名为“F
我有两列,area 和 block,其中 area 是一个 int 类型,block 是一个 varchar。 现在我正在写两个查询: select * from table where area a
使用 Slick 2,我试图生成一个带有元组 IN 子句的查询: select * from my_table where (a, b) IN ((1, 87)); 给定: val seq: Seq[
我正在尝试从数据透视表中获取一组值,其中 A 列等于值数组,例如 ID 12 的 attribute_value_id 等于 3 和 9。这可以做到吗?我已经走了这么远... ID | post_id
我找不到这样做的有效方法。我在 Python 中有以下 DataFrame,列从 A 到 Z A B C ... Z 0 2.0 8.0 1.0 ... 5.0 1
我的数据框中有以下格式的数据: >>> df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD')) >>> df
我有多个与我公司销售的产品相关的表被新产品取代,随着时间的推移,这导致了多个表的出现。 我一遍又一遍地使用以下查询,直到最终表中只剩下 2 个产品... CREATE TABLE mar15a
我有如下 2 个表:- 表A ------------------------------- | product_id | price | --------------------
我有一个名为 tbl_mainsheet7 的表,创建方式如下: pk_mainsheet client_id project_id mainsheet_id project_cat EA_
我得到了以下 HTML 结构: ... ... 我的 CSS: #main-container { width:80%; margin:20px auto;
对于我的以下要求,我无法获得解决方案。 如果 data.table(如下)在 Col1 和 Col3 中有匹配的值。替换 Col2 值(旧的 New-Val)。 Col1 Col2 Col3
我正在通过连接几个表来构建一个 View ,以通过 Entity Framework 提取数据。由于此 View 没有唯一列,EntityFramework 无法检索正确的结果集(即第一列重复)。 为
好的,我已经尝试了太久了,是时候寻求帮助了。我有一个看起来有点像这样的数据框: person fruit quantity all_fruits 0 p1 grapes 2
我是一名优秀的程序员,十分优秀!