【发布时间】:2014-03-07 06:33:36
【问题描述】:
我有一个按以下方式建模的现有数据库:
用户 - Id(PK)、登录名、密码
语言环境 - Id(PK)、描述、方向等...
users_locales - user_id(K), local_id(K)
实体类如下
用户
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue
private Integer id;
private String login;
private String password;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_locales", joinColumns = {@JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "local_id") })
private List<Local> userLocales = new ArrayList<Local>();
本地
@Entity
@Table(name="locales")
public class Local {
@Id
@Column(name="id")
@GeneratedValue
private Integer id;
@Column(name="descripcion")
private String descripcion;
@Column(name="direccion")
private String direccion;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_locales", joinColumns = {@JoinColumn(name = "local_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") })
private List<User> localesUser = new ArrayList<User>();
我需要在显示用户登录的“本地”合作伙伴列表的 jsp 页面中使用选项选择,但我无法正确部署它。
这还没有完全开发,我做错了一件或多件事情,因为我无法完全理解休眠和 Spring 安全性的工作原理。
需要在“UserService”中创建一个生成列表的服务,这就是我需要的帮助。
我添加了一些我认为此任务可能需要的代码 sn-ps。
用户服务
public interface UserService {
public User getUser(String login);
}
localServiceImpl
@Transactional
public List<Local> listLocal() {
return localDAO.listLocal();
}
//This just show a list of all Local objects in database
localDAOImpl
@Repository
public class LocalDAOImpl implements LocalDAO {
@Autowired
private SessionFactory sessionFactory;
public List<Local> listLocal() {
return sessionFactory.getCurrentSession().createQuery("from Local")
.list();
}
}
控制器
@RequestMapping(value="/index", method=RequestMethod.GET)
public ModelAndView indexPage( Map<String, Object> map ) {
map.put("localList", localService.listLocal());
return new ModelAndView("home");
}
//Now its pointing to localService and this list all objets in database
home.jsp 文件
<select label="Locales" array="Locales" name="Locales">
<c:forEach items="${localList}" var="local">
<option value="${local.localidad}">
<c:out value="${local.descripcion}"/>
</option>
</c:forEach>
</select>
如何列出与当前用户会话相关的“语言环境”?对可能的拼写或语法错误深表歉意。
【问题讨论】:
-
我有点迷茫,你面临的具体问题是什么?
-
感谢您的关注。 JSP 只显示表区域设置中的所有实例,而不是与登录用户相关的“区域设置”。
-
那么请告诉我们
localDAO.listLocal()的实现。 -
哎呀,我的错。我已经编辑了帖子。
标签: java spring hibernate spring-security many-to-many