Hallo zusammen
(Ich arbeite mit JBoss 6, MySql 5.5.2 und spreche hibernate über javax.persistence.* an.)
Ich bin das erste mal am JPA ausprobieren und steh schon voll auf dem Schlauch
Ich versuche gerade eine kleine Test Applikation zu schreiben (mini Zeitverwaltung).
Meine Enteties sehen wie folgt aus:
Nun die erste Frage, was muss ich für eine Beziehung setzten für Project.entries?
(Ein TimeEntry sollte einem Project zugeteilt werden können und ein Project sollte n TimeEntry haben können)
.....
Weiter habe ich in meiner Applikation noch ein jaas login mit einer MySQL Datenbank dahinter.
(Tabellen: user & roles)
Ein TimeEntry sollte nicht nur einem Projekt sondern auch einem User zugeteilt werden. Als user würde ich gerne den Eintrag in der user Tabelle (welche auch für das Login gebraucht wird) benutzen... geht das und wenn ja, muss ich etwas spezielles beachten?
Hier noch ein ERM, wie ich mir die Datenbank ungefähr vorstelle.
persistence.xml
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceCotext/jTime">
<jta-data-source>java:jdbc/jTime</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
[/XML]
mysql-ds.xml
[XML]
<local-tx-datasource>
<jndi-name>jdbc/jTime</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/jtime</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
[/XML]
login-config.xml
[XML]
<application-policy name="jTimeSecurityDomain">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:jdbc/jTime</module-option>
<module-option name="principalsQuery">SELECT password FROM user WHERE username=?</module-option>
<module-option name="rolesQuery">SELECT role, 'Roles' FROM roles WHERE username=?</module-option>
</login-module>
</authentication>
</application-policy>
[/XML]
(Ich arbeite mit JBoss 6, MySql 5.5.2 und spreche hibernate über javax.persistence.* an.)
Ich bin das erste mal am JPA ausprobieren und steh schon voll auf dem Schlauch
Ich versuche gerade eine kleine Test Applikation zu schreiben (mini Zeitverwaltung).
Meine Enteties sehen wie folgt aus:
Java:
@Entity
@Table(name = "TimeEntry")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeEntry implements Serializable
{
@Id
@GeneratedValue
private Long id;
private String doneWork;
private Date beginTime;
private Date endTime;
}
Java:
@Entity
@Table(name = "Project")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Project implements Serializable
{
@Id
@GeneratedValue
private Long id;
//@ManyToOne(targetEntity = TimeEntry.class) was muss hier hin?
private List<TimeEntry> entries;
private String name;
private String description;
}
Nun die erste Frage, was muss ich für eine Beziehung setzten für Project.entries?
(Ein TimeEntry sollte einem Project zugeteilt werden können und ein Project sollte n TimeEntry haben können)
.....
Weiter habe ich in meiner Applikation noch ein jaas login mit einer MySQL Datenbank dahinter.
(Tabellen: user & roles)
Ein TimeEntry sollte nicht nur einem Projekt sondern auch einem User zugeteilt werden. Als user würde ich gerne den Eintrag in der user Tabelle (welche auch für das Login gebraucht wird) benutzen... geht das und wenn ja, muss ich etwas spezielles beachten?
Hier noch ein ERM, wie ich mir die Datenbank ungefähr vorstelle.

persistence.xml
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="persistenceCotext/jTime">
<jta-data-source>java:jdbc/jTime</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
[/XML]
mysql-ds.xml
[XML]
<local-tx-datasource>
<jndi-name>jdbc/jTime</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/jtime</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password></password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
[/XML]
login-config.xml
[XML]
<application-policy name="jTimeSecurityDomain">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:jdbc/jTime</module-option>
<module-option name="principalsQuery">SELECT password FROM user WHERE username=?</module-option>
<module-option name="rolesQuery">SELECT role, 'Roles' FROM roles WHERE username=?</module-option>
</login-module>
</authentication>
</application-policy>
[/XML]